bool CClientList::DoRequestFirewallCheckUDP(const Kademlia::CContact& contact){ // first make sure we don't know this IP already from somewhere if (FindClientByIP(ntohl(contact.GetIPAddress())) != NULL) return false; // fine, justcreate the client object, set the state and wait // TODO: We don't know the clients usershash, this means we cannot build an obfuscated connection, which // again mean that the whole check won't work on "Require Obfuscation" setting, which is not a huge problem, // but certainly not nice. Only somewhat acceptable way to solve this is to use the KadID instead. CUpDownClient* pNewClient = new CUpDownClient(0, contact.GetTCPPort(), contact.GetIPAddress(), 0, 0, false ); pNewClient->SetKadState(KS_QUEUED_FWCHECK_UDP); DebugLog(_T("Selected client for UDP Firewallcheck: %s"), ipstr(ntohl(contact.GetIPAddress()))); AddToKadList(pNewClient); AddClient(pNewClient); ASSERT( !pNewClient->SupportsDirectUDPCallback() ); return true; }
bool CClientList::DoRequestFirewallCheckUDP(const Kademlia::CContact& contact) { // first make sure we don't know this IP already from somewhere if (IsIPAlreadyKnown(wxUINT32_SWAP_ALWAYS(contact.GetIPAddress()))) { return false; } // fine, just create the client object, set the state and wait // TODO: We don't know the client's userhash, this means we cannot build an obfuscated connection, which // again mean that the whole check won't work on "Require Obfuscation" setting, which is not a huge problem, // but certainly not nice. Only somewhat acceptable way to solve this is to use the KadID instead. CUpDownClient* pNewClient = new CUpDownClient(contact.GetTCPPort(), contact.GetIPAddress(), 0, 0, NULL, false, true); pNewClient->SetKadState(KS_QUEUED_FWCHECK_UDP); AddDebugLogLineN(logClient, wxT("Selected client for UDP Firewallcheck: ") + KadIPToString(contact.GetIPAddress())); AddToKadList(pNewClient); AddClient(pNewClient); wxASSERT(!pNewClient->SupportsDirectUDPCallback()); return true; }