diff --git a/src/dht.cpp b/src/dht.cpp index 3640c99d17b78a1c2b956f41c70c522b96e979a3..9ed483f3c27bc8da57ce5579b84927e78dd6a2b1 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -1367,8 +1367,13 @@ Dht::cancelListen(const InfoHash& id, size_t token) if (af_token == 0) continue; s->listeners.erase(af_token); - for (auto& sn : s->nodes) // also erase requests for all searchnodes. - network_engine.cancelRequest(sn.listenStatus); + if (s->listeners.empty()) { + for (auto& sn : s->nodes) { + // also erase requests for all searchnodes. + network_engine.cancelRequest(sn.listenStatus); + sn.listenStatus.reset(); + } + } } }; searches_cancel_listen(searches4);