From 69fe399db0370a66b2546a8fc7a2bf8d9d420253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Sun, 1 Dec 2019 20:54:37 -0500 Subject: [PATCH] proxy server: cancelListen on destroy --- src/dht_proxy_server.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/dht_proxy_server.cpp b/src/dht_proxy_server.cpp index a643a985..0ea1fad5 100644 --- a/src/dht_proxy_server.cpp +++ b/src/dht_proxy_server.cpp @@ -273,6 +273,25 @@ DhtProxyServer::io_context() const DhtProxyServer::~DhtProxyServer() { + if (dht_) { + std::lock_guard<std::mutex> lock(lockListener_); + for (auto& l : listeners_) { + dht_->cancelListen(l.second.hash, std::move(l.second.token)); + if (l.second.response) + l.second.response->done(); + } + for (auto& lm: pushListeners_) { + for (auto& ls: lm.second.listeners) + for (auto& l : ls.second) { + if (l.expireNotifyTimer) + l.expireNotifyTimer->cancel(); + if (l.expireTimer) + l.expireTimer->cancel(); + dht_->cancelListen(ls.first, std::move(l.internalToken)); + } + } + pushListeners_.clear(); + } if (logger_) logger_->d("[proxy:server] closing http server"); if (httpServer_) -- GitLab