diff --git a/AddressBook.cpp b/AddressBook.cpp index 2456aaa8..eac15db2 100644 --- a/AddressBook.cpp +++ b/AddressBook.cpp @@ -182,9 +182,15 @@ namespace client ident = *identHash; return true; } + else + return false; } } - return false; + // if not .b32 we assume full base64 address + i2p::data::IdentityEx dest; + dest.FromBase64 (address); + ident = dest.GetIdentHash (); + return true; } const i2p::data::IdentHash * AddressBook::FindAddress (const std::string& address) diff --git a/BOB.cpp b/BOB.cpp index 831bf0a6..d08f675d 100644 --- a/BOB.cpp +++ b/BOB.cpp @@ -76,9 +76,12 @@ namespace client m_ReceivedData = (uint8_t *)eol + 1; m_ReceivedDataLen = bytes_transferred - (eol - m_ReceiveBuffer + 1); i2p::data::IdentHash ident; - i2p::data::IdentityEx dest; - dest.FromBase64 (m_ReceiveBuffer); // TODO: might be .i2p address - ident = dest.GetIdentHash (); + if (!context.GetAddressBook ().GetIdentHash (m_ReceiveBuffer, ident)) + { + LogPrint (eLogError, "BOB address ", m_ReceiveBuffer, " not found"); + delete socket; + return; + } auto leaseSet = GetLocalDestination ()->FindLeaseSet (ident); if (leaseSet) CreateConnection (socket, leaseSet);