From 624efde7e40e016b01b1191ef187e0e377a43349 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Sep 2019 20:41:23 -0700 Subject: [PATCH] Make sure threads dont exit on spurious return values from recvfrom unless we are really dying. --- root/root.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/root/root.cpp b/root/root.cpp index 83dc82b2..e46903e0 100644 --- a/root/root.cpp +++ b/root/root.cpp @@ -694,7 +694,10 @@ static int bindSocket(struct sockaddr *const bindAddr) return s; } -static void shutdownSigHandler(int sig) { s_run = false; } +static void shutdownSigHandler(int sig) +{ + s_run = false; +} int main(int argc,char **argv) { @@ -918,7 +921,7 @@ int main(int argc,char **argv) printf("WARNING: unexpected exception handling packet from %s: unknown exception" ZT_EOL_S,reinterpret_cast(&in6)->toString(ipstr)); } } - } else if ((errno != EAGAIN)&&(errno != EWOULDBLOCK)) { + } else if (!s_run) { break; } } @@ -947,7 +950,7 @@ int main(int argc,char **argv) printf("WARNING: unexpected exception handling packet from %s: unknown exception" ZT_EOL_S,reinterpret_cast(&in4)->toString(ipstr)); } } - } else if ((errno != EAGAIN)&&(errno != EWOULDBLOCK)) { + } else if (!s_run) { break; } } @@ -1292,6 +1295,7 @@ int main(int argc,char **argv) // If we received a kill signal, close everything and wait // for threads to die before exiting. + s_run = false; // sanity check apiServ.stop(); for(auto s=sockets.begin();s!=sockets.end();++s) { shutdown(*s,SHUT_RDWR);