From bd8c9d05d8c314ddf13b2e64394a636e6a0061cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Thu, 11 Jun 2020 15:03:04 -0400 Subject: [PATCH] network engine: complete request in case of error --- src/dht.cpp | 1 - src/network_engine.cpp | 1 + src/request.h | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/dht.cpp b/src/dht.cpp index 72ec2dd1..547d9757 100644 --- a/src/dht.cpp +++ b/src/dht.cpp @@ -2175,7 +2175,6 @@ Dht::onError(Sp<net::Request> req, net::DhtProtocolException e) { if (logger_) logger_->e(node->id, "[node %s] token flush", node->toString().c_str()); node->authError(); - node->cancelRequest(req); for (auto& srp : searches(node->getFamily())) { auto& sr = srp.second; for (auto& n : sr->nodes) { diff --git a/src/network_engine.cpp b/src/network_engine.cpp index ad22b3cf..f83f2610 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -560,6 +560,7 @@ NetworkEngine::process(std::unique_ptr<ParsedMessage>&& msg, const SockAddr& fro { req->last_try = time_point::min(); req->reply_time = time_point::min(); + req->setError(); onError(req, DhtProtocolException {msg->error_code}); } else { if (logIncoming_) diff --git a/src/request.h b/src/request.h index 61d2dd4f..5b862911 100644 --- a/src/request.h +++ b/src/request.h @@ -96,6 +96,12 @@ struct Request { clear(); } } + void setError() { + if (pending()) { + state_ = Request::State::COMPLETED; + clear(); + } + } void cancel() { if (pending()) { -- GitLab