From 751e79a2504bc2ffba2383483f181729ef7c59e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= Date: Mon, 23 Jul 2018 10:58:05 -0400 Subject: [PATCH] dhtrunner: don't use listeners structure without proxy client enabled The token used to cancel a listener was wrong. Indeed, tokenBGlobal was used to get the linked listener, not to identify the listener inside dhtrunner. --- src/dhtrunner.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp index 37851757..d1eaaff8 100644 --- a/src/dhtrunner.cpp +++ b/src/dhtrunner.cpp @@ -583,6 +583,7 @@ DhtRunner::listen(InfoHash hash, ValueCallback vcb, Value::Filter f, Where w) { std::lock_guard lck(storage_mtx); pending_ops.emplace([=](SecureDht& dht) mutable { +#if OPENDHT_PROXY_CLIENT auto tokenbGlobal = listener_token_++; Listener listener {}; listener.hash = hash; @@ -590,21 +591,20 @@ DhtRunner::listen(InfoHash hash, ValueCallback vcb, Value::Filter f, Where w) listener.w = std::move(w); listener.gcb = [hash,vcb,tokenbGlobal,this](const std::vector>& vals, bool expired){ if (not vcb(vals, expired)) { -#if OPENDHT_PROXY_CLIENT cancelListen(hash, tokenbGlobal); -#endif return false; } return true; }; -#if OPENDHT_PROXY_CLIENT if (use_proxy) listener.tokenProxyDht = dht.listen(hash, listener.gcb, listener.f, listener.w); else -#endif listener.tokenClassicDht = dht.listen(hash, listener.gcb, listener.f, listener.w); listeners_.emplace(tokenbGlobal, std::move(listener)); ret_token->set_value(tokenbGlobal); +#else + ret_token->set_value(dht.listen(hash, vcb, f, w)); +#endif }); } cv.notify_all(); @@ -898,8 +898,8 @@ DhtRunner::findCertificate(InfoHash hash, std::function