diff --git a/libi2pd/Garlic.cpp b/libi2pd/Garlic.cpp index 8c8602e8..b8794753 100644 --- a/libi2pd/Garlic.cpp +++ b/libi2pd/Garlic.cpp @@ -28,7 +28,7 @@ namespace garlic { GarlicRoutingSession::GarlicRoutingSession (GarlicDestination * owner, bool attachLeaseSet): m_Owner (owner), m_LeaseSetUpdateStatus (attachLeaseSet ? eLeaseSetUpdated : eLeaseSetDoNotSend), - m_LeaseSetUpdateMsgID (0) + m_LeaseSetUpdateMsgID (0), m_IsWithJava (false) { } diff --git a/libi2pd/Garlic.h b/libi2pd/Garlic.h index 055c778d..6479710e 100644 --- a/libi2pd/Garlic.h +++ b/libi2pd/Garlic.h @@ -90,7 +90,6 @@ namespace garlic // for streaming only int rtt; // RTT uint32_t updateTime; // seconds since epoch - bool isJava; // based on choked value }; class GarlicDestination; @@ -131,6 +130,9 @@ namespace garlic std::shared_ptr GetSharedRoutingPath (); void SetSharedRoutingPath (std::shared_ptr path); + + bool IsWithJava () const { return m_IsWithJava; } + void SetIsWithJava (bool isWithJava) { m_IsWithJava = isWithJava; } GarlicDestination * GetOwner () const { return m_Owner; } void SetOwner (GarlicDestination * owner) { m_Owner = owner; } @@ -154,6 +156,7 @@ namespace garlic uint64_t m_LeaseSetSubmissionTime; // in milliseconds std::shared_ptr m_SharedRoutingPath; + bool m_IsWithJava; // based on choked value from streaming public: diff --git a/libi2pd/Streaming.cpp b/libi2pd/Streaming.cpp index 4c676e86..c9d97a2e 100644 --- a/libi2pd/Streaming.cpp +++ b/libi2pd/Streaming.cpp @@ -426,11 +426,7 @@ namespace stream LogPrint (eLogDebug, "Streaming: limit window size for java client"); m_MaxWindowSize = 32; m_IsJavaClient = true; - if (m_RoutingSession) - { - auto path = m_RoutingSession->GetSharedRoutingPath (); - if (path) path->isJava = true; - } + if (m_RoutingSession) m_RoutingSession->SetIsWithJava (true); } m_WindowDropTargetSize = MIN_WINDOW_SIZE; m_LastWindowDropSize = 0; @@ -772,7 +768,7 @@ namespace stream if (m_RoutingSession) m_RoutingSession->SetSharedRoutingPath ( std::make_shared ( - i2p::garlic::GarlicRoutingPath{m_CurrentOutboundTunnel, m_CurrentRemoteLease, (int)m_RTT, 0, false})); + i2p::garlic::GarlicRoutingPath{m_CurrentOutboundTunnel, m_CurrentRemoteLease, (int)m_RTT, 0})); m_IsFirstACK = false; } if (acknowledged) @@ -1287,9 +1283,9 @@ namespace stream m_CurrentOutboundTunnel = routingPath->outboundTunnel; m_CurrentRemoteLease = routingPath->remoteLease; m_RTT = routingPath->rtt; - m_IsJavaClient = routingPath->isJava; - if (m_IsJavaClient) m_MaxWindowSize = 32; } + m_IsJavaClient = m_RoutingSession->IsWithJava (); + if (m_IsJavaClient) m_MaxWindowSize = 32; } auto ts = i2p::util::GetMillisecondsSinceEpoch ();