void C4Network2Client::SendAddresses(C4Network2IOConnection *pConn) { // send all addresses for (int32_t i = 0; i < iAddrCnt; i++) { C4NetIOPacket Pkt = MkC4NetIOPacket(PID_Addr, C4PacketAddr(getID(), Addr[i])); if (pConn) pConn->Send(Pkt); else pParent->BroadcastMsgToConnClients(Pkt); } }
bool C4Network2Client::AddAddr(const C4Network2Address &addr, bool fAnnounce) { // checks if (iAddrCnt + 1 >= C4ClientMaxAddr) return false; if (hasAddr(addr)) return true; // add Addr[iAddrCnt] = addr; AddrAttempts[iAddrCnt] = 0; iAddrCnt++; // attempt to use this one if (!iNextConnAttempt) iNextConnAttempt = time(NULL); // announce if (fAnnounce) if (!pParent->BroadcastMsgToConnClients(MkC4NetIOPacket(PID_Addr, C4PacketAddr(getID(), addr)))) return false; // done return true; }
void C4Network2Client::SendAddresses(C4Network2IOConnection *pConn) { // send all addresses for (int32_t i = 0; i < iAddrCnt; i++) { if (Addr[i].getAddr().GetScopeId() && (!pConn || pConn->getPeerAddr().GetScopeId() != Addr[i].getAddr().GetScopeId())) continue; C4Network2Address addr(Addr[i]); addr.getAddr().SetScopeId(0); C4NetIOPacket Pkt = MkC4NetIOPacket(PID_Addr, C4PacketAddr(getID(), addr)); if (pConn) pConn->Send(Pkt); else pParent->BroadcastMsgToConnClients(Pkt); } }