diff --git a/src/search.h b/src/search.h index 40a43e41f0da92032a479736361d3cc3a8a00280..e5aeee82bf14e4681fe0bd6cbeab2f459763cf8a 100644 --- a/src/search.h +++ b/src/search.h @@ -76,6 +76,11 @@ struct Dht::SearchNode { node is a new candidate for inclusion. */ SearchNode() : node() {} + SearchNode(const SearchNode&) = delete; + SearchNode(SearchNode&&) = default; + SearchNode& operator=(const SearchNode&) = delete; + SearchNode& operator=(SearchNode&&) = default; + SearchNode(const Sp<Node>& node) : node(node) {} ~SearchNode() { if (node) { @@ -186,6 +191,7 @@ struct Dht::SearchNode { node->cancelRequest(status.second); } } + getStatus.clear(); } /** @@ -227,10 +233,11 @@ struct Dht::SearchNode { void cancelAnnounce() { for (const auto& status : acked) { const auto& req = status.second.first; - if (req->pending()) { + if (req and req->pending()) { node->cancelRequest(req); } } + acked.clear(); } bool isListening(time_point now) const {