mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-08 22:13:48 +01:00
fix sam crash on exit and datagram crash with no outbound tunnel
This commit is contained in:
parent
042adb5e34
commit
965896b932
3 changed files with 13 additions and 18 deletions
|
@ -310,7 +310,7 @@ namespace datagram
|
|||
std::vector<i2p::tunnel::TunnelMessageBlock> send;
|
||||
auto routingPath = GetSharedRoutingPath();
|
||||
// if we don't have a routing path we will drop all queued messages
|
||||
if(routingPath)
|
||||
if(routingPath && routingPath->outboundTunnel && routingPath->remoteLease)
|
||||
{
|
||||
for (const auto & msg : m_SendQueue)
|
||||
{
|
||||
|
|
8
SAM.cpp
8
SAM.cpp
|
@ -711,11 +711,6 @@ namespace client
|
|||
PumpBacklog();
|
||||
}
|
||||
|
||||
SAMSession::~SAMSession ()
|
||||
{
|
||||
i2p::client::context.DeleteLocalDestination (localDestination);
|
||||
}
|
||||
|
||||
void SAMSession::AcceptI2P(std::shared_ptr<i2p::stream::Stream> stream)
|
||||
{
|
||||
if(!stream) return; // fail
|
||||
|
@ -767,6 +762,7 @@ namespace client
|
|||
|
||||
void SAMSession::CloseStreams ()
|
||||
{
|
||||
m_BacklogPumper.cancel();
|
||||
localDestination->GetService().post([&] () {
|
||||
std::lock_guard<std::mutex> lock(m_SocketsMutex);
|
||||
for (auto& sock : m_Sockets) {
|
||||
|
@ -775,9 +771,9 @@ namespace client
|
|||
for(auto & stream : m_Backlog) {
|
||||
stream->Close();
|
||||
}
|
||||
// XXX: should this be done inside locked parts?
|
||||
m_Sockets.clear();
|
||||
m_Backlog.clear();
|
||||
i2p::client::context.DeleteLocalDestination (localDestination);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
1
SAM.h
1
SAM.h
|
@ -165,7 +165,6 @@ namespace client
|
|||
}
|
||||
|
||||
SAMSession (std::shared_ptr<ClientDestination> dest);
|
||||
~SAMSession ();
|
||||
|
||||
void AcceptI2P(std::shared_ptr<i2p::stream::Stream> stream);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue