Changeset View
Changeset View
Standalone View
Standalone View
src/torcontrol.cpp
Show First 20 Lines • Show All 881 Lines • ▼ Show 20 Lines | #endif | ||||
torControlThread = std::thread( | torControlThread = std::thread( | ||||
std::bind(&TraceThread<void (*)()>, "torcontrol", &TorControlThread)); | std::bind(&TraceThread<void (*)()>, "torcontrol", &TorControlThread)); | ||||
} | } | ||||
void InterruptTorControl() { | void InterruptTorControl() { | ||||
if (gBase) { | if (gBase) { | ||||
LogPrintf("tor: Thread interrupt\n"); | LogPrintf("tor: Thread interrupt\n"); | ||||
event_base_loopbreak(gBase); | event_base_once( | ||||
gBase, -1, EV_TIMEOUT, | |||||
[](evutil_socket_t, short, void *) { event_base_loopbreak(gBase); }, | |||||
nullptr, nullptr); | |||||
} | } | ||||
} | } | ||||
void StopTorControl() { | void StopTorControl() { | ||||
if (gBase) { | if (gBase) { | ||||
torControlThread.join(); | torControlThread.join(); | ||||
event_base_free(gBase); | event_base_free(gBase); | ||||
gBase = nullptr; | gBase = nullptr; | ||||
} | } | ||||
} | } |