Merge pull request #2357 from parsebulb/fix-exit-segfault

Don't preserve session lifetime in handlers
This commit is contained in:
orignal authored and GitHub committed 2026-03-17 10:26:18 -04:00
commit 8f61ff3bc9
2 files changed
+10 -6

No files matched your search

+8 -4
View File
@@ -896,10 +896,12 @@ namespace transport
m_X25519KeysPairSupplier.Return (pair);
}
void Transports::PeerConnected (std::shared_ptr<TransportSession> session)
void Transports::PeerConnected (std::weak_ptr<TransportSession> session)
{
boost::asio::post (*m_Service, [session, this]()
boost::asio::post (*m_Service, [weakSession = std::move(session), this]()
{
auto session = weakSession.lock();
if (!session) return;
auto remoteIdentity = session->GetRemoteIdentity ();
if (!remoteIdentity) return;
auto ident = remoteIdentity->GetIdentHash ();
@@ -973,10 +975,12 @@ namespace transport
});
}
void Transports::PeerDisconnected (std::shared_ptr<TransportSession> session)
void Transports::PeerDisconnected (std::weak_ptr<TransportSession> session)
{
boost::asio::post (*m_Service, [session, this]()
boost::asio::post (*m_Service, [weakSession = std::move(session), this]()
{
auto session = weakSession.lock();
if (!session) return;
auto remoteIdentity = session->GetRemoteIdentity ();
if (!remoteIdentity) return;
auto ident = remoteIdentity->GetIdentHash ();
+2 -2
View File
@@ -156,8 +156,8 @@ namespace transport
std::future<std::shared_ptr<TransportSession> > SendMessage (const i2p::data::IdentHash& ident, std::shared_ptr<i2p::I2NPMessage> msg);
std::future<std::shared_ptr<TransportSession> > SendMessages (const i2p::data::IdentHash& ident, std::list<std::shared_ptr<i2p::I2NPMessage> >&& msgs);
void PeerConnected (std::shared_ptr<TransportSession> session);
void PeerDisconnected (std::shared_ptr<TransportSession> session);
void PeerConnected (std::weak_ptr<TransportSession> session);
void PeerDisconnected (std::weak_ptr<TransportSession> session);
bool IsConnected (const i2p::data::IdentHash& ident) const;
void UpdatePeerParams (std::shared_ptr<const i2p::data::RouterInfo> r);