diff --git a/cppForSwig/BitcoinP2P.cpp b/cppForSwig/BitcoinP2P.cpp index f386adb71..dfe52ca6a 100644 --- a/cppForSwig/BitcoinP2P.cpp +++ b/cppForSwig/BitcoinP2P.cpp @@ -1407,9 +1407,13 @@ void BitcoinP2P::updateNodeStatus(bool connected) //////////////////////////////////////////////////////////////////////////////// void BitcoinP2PSocket::respond(vector& packet) { - readDataStack_->push_back(move(packet)); + if (packet.size() >= 0) + readDataStack_->push_back(move(packet)); + else + readDataStack_->terminate(); } + //////////////////////////////////////////////////////////////////////////////// void BitcoinP2PSocket::pushPayload( unique_ptr write_payload, diff --git a/cppForSwig/SocketObject.cpp b/cppForSwig/SocketObject.cpp index 793992d35..50bffbb75 100644 --- a/cppForSwig/SocketObject.cpp +++ b/cppForSwig/SocketObject.cpp @@ -549,6 +549,7 @@ void PersistentSocket::socketService_win() } run_.store(false, memory_order_relaxed); + readQueue_.terminate(); } #endif @@ -587,6 +588,9 @@ void PersistentSocket::readService() respond(payload); } + + vector emptyPacket; + respond(emptyPacket); } ///////////////////////////////////////////////////////////////////////////////