From 80b944d943343372dbee1d44e6f6e5d828348ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 7 Mar 2018 17:24:08 -0500 Subject: [PATCH] dhtnode: prevent crash in cancelListen --- tools/dhtnode.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp index b5a76405..0c12df62 100644 --- a/tools/dhtnode.cpp +++ b/tools/dhtnode.cpp @@ -254,11 +254,7 @@ void cmd_loop(std::shared_ptr<DhtRunner>& dht, dht_params& params } dht::InfoHash id; - if (op == "cl") { - std::string hash, rem; - iss >> hash >> rem; - dht->cancelListen(dht::InfoHash(hash), std::stoul(rem)); - } + if (false) {} #ifdef OPENDHT_INDEXATION else if (op == "il" or op == "ii") { // Pht syntax @@ -268,7 +264,7 @@ void cmd_loop(std::shared_ptr<DhtRunner>& dht, dht_params& params return i.first == index; }) == indexes.end(); if (not index.size()) { - std::cout << "You must enter the index name." << std::endl; + std::cerr << "You must enter the index name." << std::endl; continue; } else if (new_index) { using namespace dht::indexation; @@ -338,6 +334,18 @@ void cmd_loop(std::shared_ptr<DhtRunner>& dht, dht_params& params auto t = token.get(); std::cout << "Listening, token: " << t << std::endl; } + if (op == "cl") { + std::string rem; + iss >> rem; + size_t token; + try { + token = std::stoul(rem); + } catch(...) { + std::cerr << "Syntax: cl [key] [token]" << std::endl; + continue; + } + dht->cancelListen(id, token); + } else if (op == "p") { std::string v; iss >> v; -- GitLab