Merge pull request #381 from PurpleI2P/openssl

recent changes
This commit is contained in:
orignal 2016-02-16 16:01:12 -05:00
commit 01a8c507e5
4 changed files with 41 additions and 26 deletions

View File

@ -229,11 +229,7 @@ namespace client
delete m_Storage; delete m_Storage;
m_Storage = nullptr; m_Storage = nullptr;
} }
if (m_DefaultSubscription)
{
delete m_DefaultSubscription;
m_DefaultSubscription = nullptr; m_DefaultSubscription = nullptr;
}
for (auto it: m_Subscriptions) for (auto it: m_Subscriptions)
delete it; delete it;
m_Subscriptions.clear (); m_Subscriptions.clear ();
@ -327,19 +323,6 @@ namespace client
LoadHostsFromStream (f); LoadHostsFromStream (f);
m_IsLoaded = true; m_IsLoaded = true;
} }
else
{
// if not found download it from http://i2p-projekt.i2p/hosts.txt
LogPrint (eLogInfo, "Addressbook: hosts.txt not found, trying to download it from default subscription.");
if (!m_IsDownloading)
{
m_IsDownloading = true;
if (!m_DefaultSubscription)
m_DefaultSubscription = new AddressBookSubscription (*this, DEFAULT_SUBSCRIPTION_ADDRESS);
m_DefaultSubscription->CheckSubscription ();
}
}
} }
void AddressBook::LoadHostsFromStream (std::istream& f) void AddressBook::LoadHostsFromStream (std::istream& f)
@ -406,6 +389,11 @@ namespace client
void AddressBook::DownloadComplete (bool success) void AddressBook::DownloadComplete (bool success)
{ {
m_IsDownloading = false; m_IsDownloading = false;
if (success && m_DefaultSubscription)
{
m_DefaultSubscription.reset (nullptr);
m_IsLoaded = true;
}
if (m_SubscriptionsUpdateTimer) if (m_SubscriptionsUpdateTimer)
{ {
m_SubscriptionsUpdateTimer->expires_from_now (boost::posix_time::minutes( m_SubscriptionsUpdateTimer->expires_from_now (boost::posix_time::minutes(
@ -418,7 +406,7 @@ namespace client
void AddressBook::StartSubscriptions () void AddressBook::StartSubscriptions ()
{ {
LoadSubscriptions (); LoadSubscriptions ();
if (!m_Subscriptions.size ()) return; if (m_IsLoaded && m_Subscriptions.empty ()) return;
auto dest = i2p::client::context.GetSharedLocalDestination (); auto dest = i2p::client::context.GetSharedLocalDestination ();
if (dest) if (dest)
@ -444,13 +432,25 @@ namespace client
{ {
auto dest = i2p::client::context.GetSharedLocalDestination (); auto dest = i2p::client::context.GetSharedLocalDestination ();
if (!dest) return; if (!dest) return;
if (m_IsLoaded && !m_IsDownloading && dest->IsReady () && !m_Subscriptions.empty ()) if (!m_IsDownloading && dest->IsReady ())
{
if (!m_IsLoaded)
{
// download it from http://i2p-projekt.i2p/hosts.txt
LogPrint (eLogInfo, "Addressbook: trying to download it from default subscription.");
if (!m_DefaultSubscription)
m_DefaultSubscription.reset (new AddressBookSubscription (*this, DEFAULT_SUBSCRIPTION_ADDRESS));
m_IsDownloading = true;
m_DefaultSubscription->CheckSubscription ();
}
else if (!m_Subscriptions.empty ())
{ {
// pick random subscription // pick random subscription
auto ind = rand () % m_Subscriptions.size(); auto ind = rand () % m_Subscriptions.size();
m_IsDownloading = true; m_IsDownloading = true;
m_Subscriptions[ind]->CheckSubscription (); m_Subscriptions[ind]->CheckSubscription ();
} }
}
else else
{ {
// try it again later // try it again later

View File

@ -78,7 +78,7 @@ namespace client
AddressBookStorage * m_Storage; AddressBookStorage * m_Storage;
volatile bool m_IsLoaded, m_IsDownloading; volatile bool m_IsLoaded, m_IsDownloading;
std::vector<AddressBookSubscription *> m_Subscriptions; std::vector<AddressBookSubscription *> m_Subscriptions;
AddressBookSubscription * m_DefaultSubscription; // in case if we don't know any addresses yet std::unique_ptr<AddressBookSubscription> m_DefaultSubscription; // in case if we don't know any addresses yet
boost::asio::deadline_timer * m_SubscriptionsUpdateTimer; boost::asio::deadline_timer * m_SubscriptionsUpdateTimer;
}; };

View File

@ -375,6 +375,14 @@ namespace data
total--; total--;
} }
} }
else if (total > 2500)
{
if (ts > it.second->GetTimestamp () + 12*3600*1000LL) // 12 hours
{
it.second->SetUnreachable (true);
total--;
}
}
else if (total > 300) else if (total > 300)
{ {
if (ts > it.second->GetTimestamp () + 30*3600*1000LL) // 30 hours if (ts > it.second->GetTimestamp () + 30*3600*1000LL) // 30 hours

View File

@ -23,6 +23,13 @@ After successfull build i2pd could be installed with:
```bash ```bash
make install make install
``` ```
or you can just use 'make' once you have all dependacies (boost and openssl) installed
```bash
git clone https://github.com/PurpleI2P/i2pd.git
cd i2pd
make
```
Debian/Ubuntu Debian/Ubuntu
------------- -------------