ConnectedAddresses stores Addresses to avoid port issues.

* Also change log level on a couple of Overlay messages.
This commit is contained in:
Edward Hennis
2015-06-04 12:33:45 -04:00
committed by Vinnie Falco
parent 49c4ec6f93
commit a0e87c7aee
2 changed files with 9 additions and 8 deletions

View File

@@ -177,14 +177,14 @@ OverlayImpl::onHandoff (std::unique_ptr <beast::asio::ssl_bundle>&& ssl_bundle,
handoff.moved = true;
if (journal.trace) journal.trace <<
if (journal.debug) journal.debug<<
"Peer connection upgrade from " << remote_endpoint;
error_code ec;
auto const local_endpoint (ssl_bundle->socket.local_endpoint(ec));
if (ec)
{
if (journal.trace) journal.trace <<
if (journal.debug) journal.debug <<
remote_endpoint << " failed: " << ec.message();
return handoff;
}
@@ -252,7 +252,7 @@ OverlayImpl::onHandoff (std::unique_ptr <beast::asio::ssl_bundle>&& ssl_bundle,
publicKey.toPublicKey(), cluster);
if (result != PeerFinder::Result::success)
{
if (journal.trace) journal.trace <<
if (journal.debug) journal.debug <<
"Peer " << remote_endpoint << " redirected, slots full";
handoff.moved = false;
handoff.response = makeRedirectResponse(slot, request,

View File

@@ -62,7 +62,7 @@ public:
// A set of non-unique IPAddresses without ports, used
// to filter duplicates when making outgoing connections.
using ConnectedAddresses = std::multiset <beast::IP::Endpoint>;
using ConnectedAddresses = std::multiset <beast::IP::Address>;
struct State
{
@@ -286,7 +286,8 @@ public:
// Check for duplicate connection
{
auto const iter = state->connected_addresses.find (remote_endpoint);
auto const iter = state->connected_addresses.find (
remote_endpoint.address());
if (iter != state->connected_addresses.end())
{
if (m_journal.debug) m_journal.debug << beast::leftw (18) <<
@@ -339,7 +340,7 @@ public:
// Remote address must not already exist
assert (result.second);
// Add to the connected address list
state->connected_addresses.emplace (remote_endpoint.at_port (0));
state->connected_addresses.emplace (remote_endpoint.address());
// Update counts
state->counts.add (*slot);
@@ -378,7 +379,7 @@ public:
assert (result.second);
// Add to the connected address list
state->connected_addresses.emplace (remote_endpoint.at_port (0));
state->connected_addresses.emplace (remote_endpoint.address());
// Update counts
state->counts.add (*slot);
@@ -895,7 +896,7 @@ public:
// Remove from connected address table
{
auto const iter (state->connected_addresses.find (
slot->remote_endpoint().at_port (0)));
slot->remote_endpoint().address()));
// Address must exist
assert (iter != state->connected_addresses.end ());
state->connected_addresses.erase (iter);