From 4b439208203cd584e158fd240a3a4a72d1248099 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Wed, 5 Aug 2020 14:14:19 +0200 Subject: basehttp: Correctly handle non-transient failure from RunData() When we failed after a retry, we only communicated failure as transient, but this seems wrong, especially given that the code now always triggers a retry when Die() is called, as Die() closes the server fd. Instead, remove the error handling in that code path, and reuse the existing fatal-ish error code handling path. --- methods/basehttp.cc | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'methods') diff --git a/methods/basehttp.cc b/methods/basehttp.cc index cd319fce1..5e29e0ce1 100644 --- a/methods/basehttp.cc +++ b/methods/basehttp.cc @@ -770,21 +770,11 @@ int BaseHttpMethod::Loop() } else { - if (Server->IsOpen() == false) + if (Server->IsOpen() == false && FailCounter < 1) { FailCounter++; Server->Close(); - - - if (FailCounter >= 2) - { - Fail(true); - FailCounter = 0; - } - else - { - _error->Discard(); - } + _error->Discard(); // Reset the pipeline QueueBack = Queue; @@ -794,6 +784,7 @@ int BaseHttpMethod::Loop() else { Server->Close(); + FailCounter = 0; switch (Result) { case ResultState::TRANSIENT_ERROR: -- cgit v1.2.3