Merge remote-tracking branch 'purple/openssl'

This commit is contained in:
Jeff Becker 2016-04-02 10:13:53 -04:00
commit 9ae9ea18e1
No known key found for this signature in database
GPG Key ID: AB950234D6EA286B
3 changed files with 20 additions and 9 deletions

View File

@ -343,10 +343,11 @@ namespace client
} }
} }
void AddressBook::LoadHostsFromStream (std::istream& f) bool AddressBook::LoadHostsFromStream (std::istream& f)
{ {
std::unique_lock<std::mutex> l(m_AddressBookMutex); std::unique_lock<std::mutex> l(m_AddressBookMutex);
int numAddresses = 0; int numAddresses = 0;
bool incomplete = false;
std::string s; std::string s;
while (!f.eof ()) while (!f.eof ())
{ {
@ -370,15 +371,21 @@ namespace client
numAddresses++; numAddresses++;
} }
else else
{
LogPrint (eLogError, "Addressbook: malformed address ", addr, " for ", name); LogPrint (eLogError, "Addressbook: malformed address ", addr, " for ", name);
} incomplete = f.eof ();
}
}
else
incomplete = f.eof ();
} }
LogPrint (eLogInfo, "Addressbook: ", numAddresses, " addresses processed"); LogPrint (eLogInfo, "Addressbook: ", numAddresses, " addresses processed");
if (numAddresses > 0) if (numAddresses > 0)
{ {
m_IsLoaded = true; if (!incomplete) m_IsLoaded = true;
m_Storage->Save (m_Addresses); m_Storage->Save (m_Addresses);
} }
return !incomplete;
} }
void AddressBook::LoadSubscriptions () void AddressBook::LoadSubscriptions ()
@ -776,13 +783,12 @@ namespace client
i2p::data::GzipInflator inflator; i2p::data::GzipInflator inflator;
inflator.Inflate (s, uncompressed); inflator.Inflate (s, uncompressed);
if (!uncompressed.fail ()) if (!uncompressed.fail ())
m_Book.LoadHostsFromStream (uncompressed); return m_Book.LoadHostsFromStream (uncompressed);
else else
return false; return false;
} }
else else
m_Book.LoadHostsFromStream (s); return m_Book.LoadHostsFromStream (s);
return true;
} }
AddressResolver::AddressResolver (std::shared_ptr<ClientDestination> destination): AddressResolver::AddressResolver (std::shared_ptr<ClientDestination> destination):

View File

@ -66,7 +66,7 @@ namespace client
void InsertAddress (const std::string& address, const std::string& base64); // for jump service void InsertAddress (const std::string& address, const std::string& base64); // for jump service
void InsertAddress (std::shared_ptr<const i2p::data::IdentityEx> address); void InsertAddress (std::shared_ptr<const i2p::data::IdentityEx> address);
void LoadHostsFromStream (std::istream& f); bool LoadHostsFromStream (std::istream& f);
void DownloadComplete (bool success, const i2p::data::IdentHash& subscription, const std::string& etag, const std::string& lastModified); void DownloadComplete (bool success, const i2p::data::IdentHash& subscription, const std::string& etag, const std::string& lastModified);
//This method returns the ".b32.i2p" address //This method returns the ".b32.i2p" address
std::string ToAddress(const i2p::data::IdentHash& ident) { return GetB32Address(ident); } std::string ToAddress(const i2p::data::IdentHash& ident) { return GetB32Address(ident); }

View File

@ -435,8 +435,13 @@ namespace crypto
std::unique_ptr<Ed25519>& GetEd25519 () std::unique_ptr<Ed25519>& GetEd25519 ()
{ {
if (!g_Ed25519) if (!g_Ed25519)
g_Ed25519.reset (new Ed25519()); {
auto c = new Ed25519();
if (!g_Ed25519) // make sure it was not created already
g_Ed25519.reset (c);
else
delete c;
}
return g_Ed25519; return g_Ed25519;
} }