changeset 16851:b4d54b6f3d10

lib-http: Added support for disabling automatic redirects.
author Stephan Bosch <stephan@rename-it.nl>
date Sat, 12 Oct 2013 10:55:38 +0300
parents 2d44e9025af3
children a8fe88d2286d
files src/lib-http/http-client-connection.c src/lib-http/http-client.c src/lib-http/http-client.h
diffstat 3 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c	Sat Oct 12 10:54:50 2013 +0300
+++ b/src/lib-http/http-client-connection.c	Sat Oct 12 10:55:38 2013 +0300
@@ -594,8 +594,9 @@
 				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);
--- a/src/lib-http/http-client.c	Sat Oct 12 10:54:50 2013 +0300
+++ b/src/lib-http/http-client.c	Sat Oct 12 10:55:38 2013 +0300
@@ -93,6 +93,7 @@
 	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;
--- a/src/lib-http/http-client.h	Sat Oct 12 10:54:50 2013 +0300
+++ b/src/lib-http/http-client.h	Sat Oct 12 10:55:38 2013 +0300
@@ -54,6 +54,9 @@
 	/* 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) 
    */