changeset 21052:504ad4604a37

lib-http: client: Fixed assert failure occurring when server returns error status early while client is still sending blocking payload.
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Wed, 09 Nov 2016 00:46:32 +0100
parents dfbc24ac8700
children b0ef5af74fb5
files src/lib-http/http-client-request.c
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-request.c	Wed Nov 09 00:24:54 2016 +0100
+++ b/src/lib-http/http-client-request.c	Wed Nov 09 00:46:32 2016 +0100
@@ -824,10 +824,16 @@
 	i_assert(data != NULL);
 
 	ret = http_client_request_continue_payload(&req, data, size);
-	if (ret < 0)
+	if (ret < 0) {
+		/* failed to send payload */
 		*_req = NULL;
-	else {
-		i_assert(ret == 0);
+	} else if (ret > 0) {
+		/* premature end of request;
+		   server sent error before all payload could be sent */
+		ret = -1;
+		*_req = NULL;
+	} else {
+		/* not finished sending payload */
 		i_assert(req != NULL);
 	}
 	return ret;