From ec8ec7eb2a0b677f80f89834d955d1f0aa614538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 18 Jan 2021 21:46:03 +0100 Subject: Shutdown server socket to terminate listener --- src/network.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/network.cpp') diff --git a/src/network.cpp b/src/network.cpp index bd64e07..eab0f67 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -189,6 +189,9 @@ Server::Priv::~Priv() finish = true; } + if (sock >= 0) + shutdown(sock, SHUT_RDWR); + announceCondvar.notify_all(); threadListen.join(); threadAnnounce.join(); @@ -212,6 +215,8 @@ void Server::Priv::doListen() (sockaddr *) &paddr, &addrlen); if (ret < 0) throw std::system_error(errno, std::generic_category()); + if (ret == 0) + break; buf.resize(ret); auto & peer = getPeer(paddr); -- cgit v1.2.3