static bool onSessionEvent(EVENT *ev) { InPacket in(ev->packet->data, ev->packet->dataLen); Pool *pool = ev->s->getPool(); PRES *pres = new(pool) PRES(pool); in >> pres->status >> pres->p2pVer; pres->realIP = in.read32(); pres->msgPort = in.read16(); ev->s->registerEvent(moduleIndex, pres); DBResult *res; DB_ROW row; SQLStmt sql(ev->conn); SQL_APPEND(sql, "SELECT contact, subscrpt FROM roster WHERE id="); sql << ev->s->getUserID(); if (!ev->conn->query(sql.getData(), sql.getLength()) || !(res = ev->conn->getResult())) return false; const char *name = ev->s->getUserName(); while ((row = res->fetchRow()) != NULL) { const char *c = row[0]; uint8 sub = atoi(row[1]); if (sub & SUB_TO) { PACKET p; p.cmd = CMD_SRV_PROBE_STATUS; p.from = name; p.to = c; p.data = NULL; p.dataLen = 0; p.online = true; ev->mapi->deliver(&p); } if ((sub & SUB_FROM) && (pres->status != STATUS_INVIS)) addAndNotify(ev, pres, c); } res->destroy(); return false; }