mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-08 22:13:48 +01:00
handle onDrop for request message in nedb requests thread
This commit is contained in:
parent
c00eb8cf44
commit
927123188c
1 changed files with 13 additions and 4 deletions
|
@ -266,13 +266,23 @@ namespace data
|
||||||
if (direct && !nextFloodfill->IsReachableFrom (i2p::context.GetRouterInfo ()) &&
|
if (direct && !nextFloodfill->IsReachableFrom (i2p::context.GetRouterInfo ()) &&
|
||||||
!i2p::transport::transports.IsConnected (nextFloodfill->GetIdentHash ()))
|
!i2p::transport::transports.IsConnected (nextFloodfill->GetIdentHash ()))
|
||||||
direct = false; // floodfill can't be reached directly
|
direct = false; // floodfill can't be reached directly
|
||||||
|
auto s = shared_from_this ();
|
||||||
|
auto onDrop = [s, dest]()
|
||||||
|
{
|
||||||
|
if (dest->IsActive ())
|
||||||
|
{
|
||||||
|
s->GetIOService ().post ([s, dest]()
|
||||||
|
{
|
||||||
|
if (dest->IsActive ()) s->SendNextRequest (dest);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
if (direct)
|
if (direct)
|
||||||
{
|
{
|
||||||
if (CheckLogLevel (eLogDebug))
|
if (CheckLogLevel (eLogDebug))
|
||||||
LogPrint (eLogDebug, "NetDbReq: Try ", dest->GetDestination ().ToBase64 (), " at ", count, " floodfill ", nextFloodfill->GetIdentHash ().ToBase64 (), " directly");
|
LogPrint (eLogDebug, "NetDbReq: Try ", dest->GetDestination ().ToBase64 (), " at ", count, " floodfill ", nextFloodfill->GetIdentHash ().ToBase64 (), " directly");
|
||||||
auto msg = dest->CreateRequestMessage (nextFloodfill->GetIdentHash ());
|
auto msg = dest->CreateRequestMessage (nextFloodfill->GetIdentHash ());
|
||||||
auto s = shared_from_this ();
|
msg->onDrop = onDrop;
|
||||||
msg->onDrop = [s, dest]() { if (dest->IsActive ()) s->SendNextRequest (dest); };
|
|
||||||
i2p::transport::transports.SendMessage (nextFloodfill->GetIdentHash (), msg);
|
i2p::transport::transports.SendMessage (nextFloodfill->GetIdentHash (), msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -287,8 +297,7 @@ namespace data
|
||||||
if (CheckLogLevel (eLogDebug))
|
if (CheckLogLevel (eLogDebug))
|
||||||
LogPrint (eLogDebug, "NetDbReq: Try ", dest->GetDestination ().ToBase64 (), " at ", count, " floodfill ", nextFloodfill->GetIdentHash ().ToBase64 (), " through tunnels");
|
LogPrint (eLogDebug, "NetDbReq: Try ", dest->GetDestination ().ToBase64 (), " at ", count, " floodfill ", nextFloodfill->GetIdentHash ().ToBase64 (), " through tunnels");
|
||||||
auto msg = dest->CreateRequestMessage (nextFloodfill, inbound);
|
auto msg = dest->CreateRequestMessage (nextFloodfill, inbound);
|
||||||
auto s = shared_from_this ();
|
msg->onDrop = onDrop;
|
||||||
msg->onDrop = [s, dest]() { if (dest->IsActive ()) s->SendNextRequest (dest); };
|
|
||||||
outbound->SendTunnelDataMsgTo (nextFloodfill->GetIdentHash (), 0,
|
outbound->SendTunnelDataMsgTo (nextFloodfill->GetIdentHash (), 0,
|
||||||
i2p::garlic::WrapECIESX25519MessageForRouter (msg, nextFloodfill->GetIdentity ()->GetEncryptionPublicKey ()));
|
i2p::garlic::WrapECIESX25519MessageForRouter (msg, nextFloodfill->GetIdentity ()->GetEncryptionPublicKey ()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue