mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 02:44:15 +00:00
detach session from destination upon termination
This commit is contained in:
parent
c833b16544
commit
ad36738f57
@ -30,6 +30,12 @@ namespace client
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void I2CPDestination::Stop ()
|
||||||
|
{
|
||||||
|
LeaseSetDestination::Stop ();
|
||||||
|
m_Owner = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void I2CPDestination::SetEncryptionPrivateKey (const uint8_t * key)
|
void I2CPDestination::SetEncryptionPrivateKey (const uint8_t * key)
|
||||||
{
|
{
|
||||||
m_Decryptor = i2p::data::PrivateKeys::CreateDecryptor (m_Identity->GetCryptoKeyType (), key);
|
m_Decryptor = i2p::data::PrivateKeys::CreateDecryptor (m_Identity->GetCryptoKeyType (), key);
|
||||||
@ -72,7 +78,8 @@ namespace client
|
|||||||
{
|
{
|
||||||
uint32_t length = bufbe32toh (buf);
|
uint32_t length = bufbe32toh (buf);
|
||||||
if (length > len - 4) length = len - 4;
|
if (length > len - 4) length = len - 4;
|
||||||
m_Owner->SendMessagePayloadMessage (buf + 4, length);
|
if (m_Owner)
|
||||||
|
m_Owner->SendMessagePayloadMessage (buf + 4, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2CPDestination::CreateNewLeaseSet (std::vector<std::shared_ptr<i2p::tunnel::InboundTunnel> > tunnels)
|
void I2CPDestination::CreateNewLeaseSet (std::vector<std::shared_ptr<i2p::tunnel::InboundTunnel> > tunnels)
|
||||||
@ -84,7 +91,8 @@ namespace client
|
|||||||
leases[-1] = tunnels.size ();
|
leases[-1] = tunnels.size ();
|
||||||
htobe16buf (leases - 3, m_Owner->GetSessionID ());
|
htobe16buf (leases - 3, m_Owner->GetSessionID ());
|
||||||
size_t l = 2/*sessionID*/ + 1/*num leases*/ + i2p::data::LEASE_SIZE*tunnels.size ();
|
size_t l = 2/*sessionID*/ + 1/*num leases*/ + i2p::data::LEASE_SIZE*tunnels.size ();
|
||||||
m_Owner->SendI2CPMessage (I2CP_REQUEST_VARIABLE_LEASESET_MESSAGE, leases - 3, l);
|
if (m_Owner)
|
||||||
|
m_Owner->SendI2CPMessage (I2CP_REQUEST_VARIABLE_LEASESET_MESSAGE, leases - 3, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2CPDestination::LeaseSetCreated (const uint8_t * buf, size_t len)
|
void I2CPDestination::LeaseSetCreated (const uint8_t * buf, size_t len)
|
||||||
@ -119,7 +127,8 @@ namespace client
|
|||||||
[s, msg, remote, nonce]()
|
[s, msg, remote, nonce]()
|
||||||
{
|
{
|
||||||
bool sent = s->SendMsg (msg, remote);
|
bool sent = s->SendMsg (msg, remote);
|
||||||
s->m_Owner->SendMessageStatusMessage (nonce, sent ? eI2CPMessageStatusGuaranteedSuccess : eI2CPMessageStatusGuaranteedFailure);
|
if (s->m_Owner)
|
||||||
|
s->m_Owner->SendMessageStatusMessage (nonce, sent ? eI2CPMessageStatusGuaranteedSuccess : eI2CPMessageStatusGuaranteedFailure);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -130,9 +139,10 @@ namespace client
|
|||||||
if (ls)
|
if (ls)
|
||||||
{
|
{
|
||||||
bool sent = s->SendMsg (msg, ls);
|
bool sent = s->SendMsg (msg, ls);
|
||||||
s->m_Owner->SendMessageStatusMessage (nonce, sent ? eI2CPMessageStatusGuaranteedSuccess : eI2CPMessageStatusGuaranteedFailure);
|
if (s->m_Owner)
|
||||||
|
s->m_Owner->SendMessageStatusMessage (nonce, sent ? eI2CPMessageStatusGuaranteedSuccess : eI2CPMessageStatusGuaranteedFailure);
|
||||||
}
|
}
|
||||||
else
|
else if (s->m_Owner)
|
||||||
s->m_Owner->SendMessageStatusMessage (nonce, eI2CPMessageStatusNoLeaseSet);
|
s->m_Owner->SendMessageStatusMessage (nonce, eI2CPMessageStatusNoLeaseSet);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,8 @@ namespace client
|
|||||||
I2CPDestination (boost::asio::io_service& service, std::shared_ptr<I2CPSession> owner,
|
I2CPDestination (boost::asio::io_service& service, std::shared_ptr<I2CPSession> owner,
|
||||||
std::shared_ptr<const i2p::data::IdentityEx> identity, bool isPublic, const std::map<std::string, std::string>& params);
|
std::shared_ptr<const i2p::data::IdentityEx> identity, bool isPublic, const std::map<std::string, std::string>& params);
|
||||||
~I2CPDestination () {};
|
~I2CPDestination () {};
|
||||||
|
|
||||||
|
void Stop ();
|
||||||
|
|
||||||
void SetEncryptionPrivateKey (const uint8_t * key);
|
void SetEncryptionPrivateKey (const uint8_t * key);
|
||||||
void SetEncryptionType (i2p::data::CryptoKeyType keyType) { m_EncryptionKeyType = keyType; };
|
void SetEncryptionType (i2p::data::CryptoKeyType keyType) { m_EncryptionKeyType = keyType; };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user