dovecot-2.2: lib-http: client: Fixed conflict between request ab...

dovecot at dovecot.org dovecot at dovecot.org
Fri Oct 24 22:39:46 UTC 2014


details:   http://hg.dovecot.org/dovecot-2.2/rev/84b5e075c62c
changeset: 18000:84b5e075c62c
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Sat Oct 25 01:38:42 2014 +0300
description:
lib-http: client: Fixed conflict between request abort and request delayed error.

diffstat:

 src/lib-http/http-client-private.h |   2 --
 src/lib-http/http-client-request.c |  12 +++++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diffs (61 lines):

diff -r d913fe3a926a -r 84b5e075c62c src/lib-http/http-client-private.h
--- a/src/lib-http/http-client-private.h	Sat Oct 25 01:38:42 2014 +0300
+++ b/src/lib-http/http-client-private.h	Sat Oct 25 01:38:42 2014 +0300
@@ -273,8 +273,6 @@
 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_send_error(struct http_client_request *req,
-			       unsigned int status, const char *error);
 void http_client_request_error_delayed(struct http_client_request **_req);
 void http_client_request_error(struct http_client_request *req,
 	unsigned int status, const char *error);
diff -r d913fe3a926a -r 84b5e075c62c src/lib-http/http-client-request.c
--- a/src/lib-http/http-client-request.c	Sat Oct 25 01:38:42 2014 +0300
+++ b/src/lib-http/http-client-request.c	Sat Oct 25 01:38:42 2014 +0300
@@ -54,6 +54,10 @@
  * Request
  */
 
+static void
+http_client_request_send_error(struct http_client_request *req,
+			       unsigned int status, const char *error);
+
 static struct http_client_request *
 http_client_request_new(struct http_client *client, const char *method, 
 		    http_client_request_callback_t *callback, void *context)
@@ -861,15 +865,13 @@
 	return TRUE;
 }
 
-void
+static void
 http_client_request_send_error(struct http_client_request *req,
 			       unsigned int status, const char *error)
 {
 	http_client_request_callback_t *callback;
 	bool sending = (req->state == HTTP_REQUEST_STATE_PAYLOAD_OUT);
 
-	if (req->state >= HTTP_REQUEST_STATE_FINISHED)
-		return;
 	req->state = HTTP_REQUEST_STATE_ABORTED;
 
 	callback = req->callback;
@@ -890,8 +892,7 @@
 {
 	struct http_client_request *req = *_req;
 
-	if (req->state >= HTTP_REQUEST_STATE_FINISHED)
-		return;
+	i_assert(req->state == HTTP_REQUEST_STATE_ABORTED);
 
 	i_assert(req->delayed_error != NULL && req->delayed_error_status != 0);
 	http_client_request_send_error(req, req->delayed_error_status,
@@ -906,6 +907,7 @@
 {
 	if (req->state >= HTTP_REQUEST_STATE_FINISHED)
 		return;
+	req->state = HTTP_REQUEST_STATE_ABORTED;
 
 	if (req->queue != NULL)
 		http_client_queue_drop_request(req->queue, req);


More information about the dovecot-cvs mailing list