mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2026-10-23 17:12:48 +00:00
Merge pull request #2357 from parsebulb/fix-exit-segfault
Don't preserve session lifetime in handlers
This commit is contained in:
2 files changed
+10
-6
No files matched your search
@@ -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 ();
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user