req->payload_sync = FALSE;
conn->output_locked = FALSE;
conn->peer->no_payload_sync = TRUE;
- http_client_request_retry(req, response.status, response.reason);
+ http_client_request_retry_response(req, &response);
} else if (response.status / 100 == 3 && response.status != 304 &&
response.location != NULL) {
void http_client_request_resubmit(struct http_client_request *req);
void http_client_request_retry(struct http_client_request *req,
unsigned int status, const char *error);
+void http_client_request_retry_response(struct http_client_request *req,
+ struct http_response *response);
void http_client_request_error(struct http_client_request *req,
unsigned int status, const char *error);
void http_client_request_redirect(struct http_client_request *req,
http_client_request_error(req, status, error);
}
+void http_client_request_retry_response(struct http_client_request *req,
+ struct http_response *response)
+{
+ if (!http_client_request_try_retry(req)) {
+ i_assert(req->submitted || req->state >= HTTP_REQUEST_STATE_FINISHED);
+ (void)http_client_request_callback(req, response);
+ http_client_request_unref(&req);
+ }
+}
+
bool http_client_request_try_retry(struct http_client_request *req)
{
/* limit the number of attempts for each request */