From 2c2acae50db410a138fc43b2a0e0af9ed6adc416 Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 1 Feb 2015 09:34:32 -0500 Subject: [PATCH] invoke acceptor on reset --- SAM.cpp | 5 ++++- Streaming.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/SAM.cpp b/SAM.cpp index 3564ce9c..e2ba5c15 100644 --- a/SAM.cpp +++ b/SAM.cpp @@ -573,6 +573,8 @@ namespace client else I2PReceive (); } + else + LogPrint (eLogInfo, "SAM I2P acceptor has been reset"); } void SAMSocket::HandleI2PDatagramReceive (const i2p::data::IdentityEx& ident, const uint8_t * buf, size_t len) @@ -709,7 +711,7 @@ namespace client // TODO: extract string values signatureType = boost::lexical_cast (it->second); } - localDestination = i2p::client::context.CreateNewLocalDestination (false, signatureType, params); + localDestination = i2p::client::context.CreateNewLocalDestination (true, signatureType, params); } if (localDestination) { @@ -729,6 +731,7 @@ namespace client if (it != m_Sessions.end ()) { auto session = it->second; + session->localDestination->StopAcceptingStreams (); session->CloseStreams (); m_Sessions.erase (it); delete session; diff --git a/Streaming.h b/Streaming.h index d3b4e20e..7b68dba7 100644 --- a/Streaming.h +++ b/Streaming.h @@ -180,7 +180,7 @@ namespace stream std::shared_ptr CreateNewOutgoingStream (std::shared_ptr remote, int port = 0); void DeleteStream (std::shared_ptr stream); void SetAcceptor (const Acceptor& acceptor) { m_Acceptor = acceptor; }; - void ResetAcceptor () { m_Acceptor = nullptr; }; + void ResetAcceptor () { if (m_Acceptor) m_Acceptor (nullptr); m_Acceptor = nullptr; }; bool IsAcceptorSet () const { return m_Acceptor != nullptr; }; i2p::client::ClientDestination& GetOwner () { return m_Owner; };