flush ip packets such that they are sent same event loop tick

pull/171/head
Jeff Becker 6 years ago
parent 4324aed7ec
commit 01f2524145
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -91,8 +91,8 @@ namespace llarp
dnsport = std::atoi(v.substr(pos + 1).c_str());
}
m_UpstreamResolvers.emplace_back(resolverAddr, dnsport);
llarp::LogInfo(Name(), " adding upstream dns set to ", resolverAddr, ":",
dnsport);
llarp::LogInfo(Name(), " adding upstream dns set to ", resolverAddr,
":", dnsport);
}
if(k == "mapaddr")
{
@ -489,9 +489,6 @@ namespace llarp
llarp::LogWarn(Name(), " did not flush packets");
return true;
});
if(m_Exit)
m_Exit->Flush();
FlushSNodeTraffic();
}
bool
@ -635,19 +632,18 @@ namespace llarp
{
// called in the isolated network thread
TunEndpoint *self = static_cast< TunEndpoint * >(tun->user);
// flush user to network
self->FlushSend();
// flush exit traffic queues if it's there
if(self->m_Exit)
self->m_Exit->Flush();
// flush snode traffic
self->FlushSNodeTraffic();
// flush network to user
self->m_NetworkToUserPktQueue.Process([tun](net::IPv4Packet &pkt) {
if(!llarp_ev_tun_async_write(tun, pkt.Buffer()))
llarp::LogWarn("packet dropped");
});
if(self->m_UserToNetworkPktQueue.Size())
self->RouterLogic()->queue_job({self, &handleNetSend});
}
void
TunEndpoint::handleNetSend(void *user)
{
TunEndpoint *self = static_cast< TunEndpoint * >(user);
self->FlushSend();
}
void

Loading…
Cancel
Save