From: Stephan Bosch Date: Sun, 21 Jan 2018 15:08:55 +0000 (+0100) Subject: lib-http: client: Reset redirect counter when the request is retried. X-Git-Tag: 2.3.9~2226 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=370753545874ea89be54dbfb52ec77dafb7bad95;p=thirdparty%2Fdovecot%2Fcore.git lib-http: client: Reset redirect counter when the request is retried. The absence of this reset caused problems when there was a redirect limit and the request was retried, in which case the limit is reached too soon. --- diff --git a/src/lib-http/http-client-request.c b/src/lib-http/http-client-request.c index f90d8be4c3..15783dc10e 100644 --- a/src/lib-http/http-client-request.c +++ b/src/lib-http/http-client-request.c @@ -1492,6 +1492,7 @@ void http_client_request_redirect(struct http_client_request *req, return; } + i_assert(req->redirects <= req->client->set.max_redirects); if (++req->redirects > req->client->set.max_redirects) { if (req->client->set.max_redirects > 0) { http_client_request_error(&req, @@ -1584,6 +1585,7 @@ void http_client_request_resubmit(struct http_client_request *req) req->peer = NULL; req->state = HTTP_REQUEST_STATE_QUEUED; + req->redirects = 0; http_client_host_submit_request(req->host, req); }