From 7d7bbf15bfd820a4662f3ad19f1702f1ed759ec9 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 15 Nov 2016 10:10:13 -0500 Subject: [PATCH 1/3] use DSA for http and socks proxy by defualt --- ClientContext.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ClientContext.cpp b/ClientContext.cpp index 4639ec05..7ec699cb 100644 --- a/ClientContext.cpp +++ b/ClientContext.cpp @@ -52,7 +52,7 @@ namespace client if (httpProxyKeys.length () > 0) { i2p::data::PrivateKeys keys; - if(LoadPrivateKeys (keys, httpProxyKeys)) + if(LoadPrivateKeys (keys, httpProxyKeys, i2p::data::SIGNING_KEY_TYPE_DSA_SHA1)) { std::map params; ReadI2CPOptionsFromConfig ("httpproxy.", params); @@ -82,7 +82,7 @@ namespace client if (socksProxyKeys.length () > 0) { i2p::data::PrivateKeys keys; - if (LoadPrivateKeys (keys, socksProxyKeys)) + if (LoadPrivateKeys (keys, socksProxyKeys, i2p::data::SIGNING_KEY_TYPE_DSA_SHA1)) { std::map params; ReadI2CPOptionsFromConfig ("socksproxy.", params); From 336cd6092021de60c8303272781b279cd02aa829 Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 15 Nov 2016 12:17:21 -0500 Subject: [PATCH 2/3] don't insert same floodfill twice --- NetDb.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/NetDb.cpp b/NetDb.cpp index e667dc11..5a622441 100644 --- a/NetDb.cpp +++ b/NetDb.cpp @@ -188,23 +188,34 @@ namespace data // TODO: check if floodfill has been changed } else + { LogPrint (eLogDebug, "NetDb: RouterInfo is older: ", ident.ToBase64()); - + updated = false; + } } else { r = std::make_shared (buf, len); if (!r->IsUnreachable ()) { - LogPrint (eLogInfo, "NetDb: RouterInfo added: ", ident.ToBase64()); + bool inserted = false; { std::unique_lock l(m_RouterInfosMutex); - m_RouterInfos[r->GetIdentHash ()] = r; + inserted = m_RouterInfos.insert ({r->GetIdentHash (), r}).second; } - if (r->IsFloodfill () && r->IsReachable ()) // floodfill must be reachable + if (inserted) + { + LogPrint (eLogInfo, "NetDb: RouterInfo added: ", ident.ToBase64()); + if (r->IsFloodfill () && r->IsReachable ()) // floodfill must be reachable + { + std::unique_lock l(m_FloodfillsMutex); + m_Floodfills.push_back (r); + } + } + else { - std::unique_lock l(m_FloodfillsMutex); - m_Floodfills.push_back (r); + LogPrint (eLogWarning, "NetDb: Duplicated RouterInfo ", ident.ToBase64()); + updated = false; } } else From 6bacf94a62874e051f82fd7b99edd3fb8873bf7f Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 15 Nov 2016 14:11:55 -0500 Subject: [PATCH 3/3] handle all loopback messages --- Transports.cpp | 3 ++- Transports.h | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Transports.cpp b/Transports.cpp index d41253d6..d06d8670 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -260,7 +260,8 @@ namespace transport { // we send it to ourself for (auto& it: msgs) - i2p::HandleI2NPMessage (it); + m_LoopbackHandler.PutNextMessage (it); + m_LoopbackHandler.Flush (); return; } if(RoutesRestricted() && ! IsRestrictedPeer(ident)) return; diff --git a/Transports.h b/Transports.h index 1fe262a9..d83c0370 100644 --- a/Transports.h +++ b/Transports.h @@ -160,13 +160,15 @@ namespace transport uint64_t m_LastInBandwidthUpdateBytes, m_LastOutBandwidthUpdateBytes; uint64_t m_LastBandwidthUpdateTime; - /** which router families to trust for first hops */ - std::vector m_TrustedFamilies; - mutable std::mutex m_FamilyMutex; + /** which router families to trust for first hops */ + std::vector m_TrustedFamilies; + mutable std::mutex m_FamilyMutex; - /** which routers for first hop to trust */ - std::vector m_TrustedRouters; - mutable std::mutex m_TrustedRoutersMutex; + /** which routers for first hop to trust */ + std::vector m_TrustedRouters; + mutable std::mutex m_TrustedRoutersMutex; + + i2p::I2NPMessagesHandler m_LoopbackHandler; public: