mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-13 04:38:28 +00:00
Selectively move over changes from "edge" to "dev" excluding netcon.
This commit is contained in:
@ -37,6 +37,7 @@ DeferredPackets::DeferredPackets(const RuntimeEnvironment *renv) :
|
||||
RR(renv),
|
||||
_readPtr(0),
|
||||
_writePtr(0),
|
||||
_waiting(0),
|
||||
_die(false)
|
||||
{
|
||||
}
|
||||
@ -45,8 +46,11 @@ DeferredPackets::~DeferredPackets()
|
||||
{
|
||||
_q_m.lock();
|
||||
_die = true;
|
||||
_q_m.unlock();
|
||||
_q_s.post();
|
||||
while (_waiting > 0) {
|
||||
_q_m.unlock();
|
||||
_q_s.post();
|
||||
_q_m.lock();
|
||||
}
|
||||
}
|
||||
|
||||
bool DeferredPackets::enqueue(IncomingPacket *pkt)
|
||||
@ -72,16 +76,16 @@ int DeferredPackets::process()
|
||||
_q_m.lock();
|
||||
if (_die) {
|
||||
_q_m.unlock();
|
||||
_q_s.post();
|
||||
return -1;
|
||||
}
|
||||
while (_readPtr == _writePtr) {
|
||||
++_waiting;
|
||||
_q_m.unlock();
|
||||
_q_s.wait();
|
||||
_q_m.lock();
|
||||
--_waiting;
|
||||
if (_die) {
|
||||
_q_m.unlock();
|
||||
_q_s.post();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user