]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: Added support for disabling automatic redirects.
authorStephan Bosch <stephan@rename-it.nl>
Sat, 12 Oct 2013 07:55:38 +0000 (10:55 +0300)
committerStephan Bosch <stephan@rename-it.nl>
Sat, 12 Oct 2013 07:55:38 +0000 (10:55 +0300)
src/lib-http/http-client-connection.c
src/lib-http/http-client.c
src/lib-http/http-client.h

index 072d25dd50f10d134ef8becab5431d29e9e52723..0d20b5c6707e51269b131dba62c656626b54a0f2 100644 (file)
@@ -594,8 +594,9 @@ static void http_client_connection_input(struct connection *_conn)
                                conn->output_locked = FALSE;
                                conn->peer->no_payload_sync = TRUE;
                                http_client_request_retry_response(req, &response);
-       
-                       } else if (response.status / 100 == 3 && response.status != 304 &&
+                               
+                       } else if (!req->client->set.no_auto_redirect &&
+                               response.status / 100 == 3 && response.status != 304 &&
                                response.location != NULL) {
                                /* redirect */
                                http_client_request_redirect(req, response.status, response.location);
index 5e8aa919eda932b75e66fc4ad0408a8cebe0a723..77ed2607b5c863c048c6ef6614626165c4c7af7c 100644 (file)
@@ -93,6 +93,7 @@ struct http_client *http_client_init(const struct http_client_settings *set)
        client->set.max_pipelined_requests =
                (set->max_pipelined_requests > 0 ? set->max_pipelined_requests : 1);
        client->set.max_attempts = set->max_attempts;
+       client->set.no_auto_redirect = set->no_auto_redirect;
        client->set.max_redirects = set->max_redirects;
        client->set.response_hdr_limits = set->response_hdr_limits;
        client->set.request_timeout_msecs = set->request_timeout_msecs;
index 594da6ae56ef08cb6d5dc3533af5349b0e664271..9cd36e10f21bf15ef9ec303f2aac571027170eef 100644 (file)
@@ -54,6 +54,9 @@ struct http_client_settings {
        /* maximum number of pipelined requests per connection (default = 1) */
        unsigned int max_pipelined_requests;
 
+       /* don't automatically act upon redirect responses */
+       bool no_auto_redirect;
+
        /* maximum number of redirects for a request
           (default = 0; redirects refused) 
    */