Mercurial > dovecot > core-2.2
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;