diff --git a/Streaming.cpp b/Streaming.cpp index 3aa5f835..eb6add1c 100644 --- a/Streaming.cpp +++ b/Streaming.cpp @@ -162,7 +162,10 @@ namespace stream optionData += m_RemoteIdentity.FromBuffer (optionData, packet->GetOptionSize ()); LogPrint (eLogInfo, "From identity ", m_RemoteIdentity.GetIdentHash ().ToBase64 ()); if (!m_RemoteLeaseSet) + { LogPrint (eLogDebug, "Incoming stream from ", m_RemoteIdentity.GetIdentHash ().ToBase64 ()); + m_LocalDestination.StreamAccepted (shared_from_this ()); + } } if (flags & PACKET_FLAG_MAX_PACKET_SIZE_INCLUDED) @@ -642,6 +645,17 @@ namespace stream } } + void StreamingDestination::StreamAccepted (std::shared_ptr stream) + { + if (m_Acceptor != nullptr) + m_Acceptor (stream); + else + { + LogPrint ("Acceptor for incoming stream is not set"); + DeleteStream (stream); + } + } + void StreamingDestination::HandleNextPacket (Packet * packet) { uint32_t sendStreamID = packet->GetSendStreamID (); @@ -660,13 +674,6 @@ namespace stream { auto incomingStream = CreateNewIncomingStream (); incomingStream->HandleNextPacket (packet); - if (m_Acceptor != nullptr) - m_Acceptor (incomingStream); - else - { - LogPrint ("Acceptor for incoming stream is not set"); - DeleteStream (incomingStream); - } } } diff --git a/Streaming.h b/Streaming.h index 69ef124d..f049540e 100644 --- a/Streaming.h +++ b/Streaming.h @@ -170,6 +170,7 @@ namespace stream void SetAcceptor (const Acceptor& acceptor) { m_Acceptor = acceptor; }; void ResetAcceptor () { m_Acceptor = nullptr; }; bool IsAcceptorSet () const { return m_Acceptor != nullptr; }; + void StreamAccepted (std::shared_ptr stream); i2p::client::ClientDestination& GetOwner () { return m_Owner; }; void HandleDataMessagePayload (const uint8_t * buf, size_t len);