diff --git a/src/peer_discovery.cpp b/src/peer_discovery.cpp
index 31843c42e33d21bfefab9ea79a436fbec40ed9e6..b427621084f01962dfa2c148e9ed47afc07e5774 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);