mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
handle requests completions in netdb requests thread
This commit is contained in:
parent
265bb8b779
commit
c00eb8cf44
@ -173,25 +173,28 @@ namespace data
|
|||||||
|
|
||||||
void NetDbRequests::RequestComplete (const IdentHash& ident, std::shared_ptr<RouterInfo> r)
|
void NetDbRequests::RequestComplete (const IdentHash& ident, std::shared_ptr<RouterInfo> r)
|
||||||
{
|
{
|
||||||
std::shared_ptr<RequestedDestination> request;
|
GetIOService ().post ([this, ident, r]()
|
||||||
{
|
|
||||||
std::unique_lock<std::mutex> l(m_RequestedDestinationsMutex);
|
|
||||||
auto it = m_RequestedDestinations.find (ident);
|
|
||||||
if (it != m_RequestedDestinations.end ())
|
|
||||||
{
|
{
|
||||||
request = it->second;
|
std::shared_ptr<RequestedDestination> request;
|
||||||
if (request->IsExploratory ())
|
{
|
||||||
m_RequestedDestinations.erase (it);
|
std::unique_lock<std::mutex> l(m_RequestedDestinationsMutex);
|
||||||
// otherwise cache for a while
|
auto it = m_RequestedDestinations.find (ident);
|
||||||
}
|
if (it != m_RequestedDestinations.end ())
|
||||||
}
|
{
|
||||||
if (request)
|
request = it->second;
|
||||||
{
|
if (request->IsExploratory ())
|
||||||
if (r)
|
m_RequestedDestinations.erase (it);
|
||||||
request->Success (r);
|
// otherwise cache for a while
|
||||||
else
|
}
|
||||||
request->Fail ();
|
}
|
||||||
}
|
if (request)
|
||||||
|
{
|
||||||
|
if (r)
|
||||||
|
request->Success (r);
|
||||||
|
else
|
||||||
|
request->Fail ();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<RequestedDestination> NetDbRequests::FindRequest (const IdentHash& ident) const
|
std::shared_ptr<RequestedDestination> NetDbRequests::FindRequest (const IdentHash& ident) const
|
||||||
|
Loading…
Reference in New Issue
Block a user