From b02e9cfff700e28fc6cb76fb4389e818a89df367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Sat, 13 Apr 2019 20:49:53 -0400 Subject: [PATCH] peerdiscovery: flush stop socket if not stopping --- src/peer_discovery.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/peer_discovery.cpp b/src/peer_discovery.cpp index 31843c42..b4276210 100644 --- a/src/peer_discovery.cpp +++ b/src/peer_discovery.cpp @@ -250,7 +250,10 @@ PeerDiscovery::listener_thread(PeerDiscoveredCallback callback) } if (data_coming > 0) { - if (FD_ISSET(stop_readfd, &readfds)) { break; } + if (FD_ISSET(stop_readfd, &readfds)) { + std::array<uint8_t, 64 * 1024> buf; + recv(stop_readfd, buf.data(), buf.size(), 0); + } std::array<uint8_t,dht::InfoHash::size() + sizeof(in_port_t)> data_receive; size_t data_receive_size = data_receive.size(); @@ -288,7 +291,7 @@ PeerDiscovery::startDiscovery(PeerDiscoveredCallback callback) } void -PeerDiscovery::startPublish(const dht::InfoHash &nodeId, in_port_t port_to_send) +PeerDiscovery::startPublish(const dht::InfoHash& nodeId, in_port_t port_to_send) { sender_setup(nodeId, port_to_send); running_send = std::thread(&PeerDiscovery::sender_thread, this); -- GitLab