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