diff --git a/HTTPServer.cpp b/HTTPServer.cpp index 4644f10d..ef76cf6e 100644 --- a/HTTPServer.cpp +++ b/HTTPServer.cpp @@ -505,6 +505,7 @@ namespace util { m_Stream->Close (); DeleteStream (m_Stream); + m_Stream = nullptr; } m_Socket->close (); delete this; diff --git a/SAM.cpp b/SAM.cpp index 0a81e305..ce42753b 100644 --- a/SAM.cpp +++ b/SAM.cpp @@ -18,7 +18,7 @@ namespace stream if (m_Stream) { m_Stream->Close (); - delete m_Stream; + DeleteStream (m_Stream); } } @@ -27,7 +27,7 @@ namespace stream if (m_Stream) { m_Stream->Close (); - delete m_Stream; + DeleteStream (m_Stream); m_Stream = nullptr; } delete this; diff --git a/Streaming.cpp b/Streaming.cpp index 166d5535..9f65d48e 100644 --- a/Streaming.cpp +++ b/Streaming.cpp @@ -38,6 +38,7 @@ namespace stream Stream::~Stream () { + Close (); m_ReceiveTimer.cancel (); m_ResendTimer.cancel (); while (!m_ReceiveQueue.empty ()) @@ -561,7 +562,8 @@ namespace stream StreamingDestination::~StreamingDestination () { - // TODO: delete streams + for (auto it: m_Streams) + delete it.second; if (m_Pool) i2p::tunnel::tunnels.DeleteTunnelPool (m_Pool); delete m_LeaseSet;