]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
OSSL_HTTP_REQ_CTX_transfer(): improve distinction of send error vs. receive error
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>
Mon, 8 Mar 2021 12:47:33 +0000 (13:47 +0100)
committerDr. David von Oheimb <dev@ddvo.net>
Wed, 31 Mar 2021 17:53:05 +0000 (19:53 +0200)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14630)

crypto/http/http_client.c

index eec13973fb75a2d73797af18f790ebe31a700420..9c2b593a2d309626dccadcfd4049832d5a78dfaf 100644 (file)
@@ -746,7 +746,6 @@ static ASN1_VALUE *BIO_mem_d2i(BIO *mem, const ASN1_ITEM *it)
 
 static BIO *ossl_http_req_ctx_transfer(OSSL_HTTP_REQ_CTX *rctx)
 {
-    int sending = 1;
     int rv;
 
     if (rctx == NULL) {
@@ -759,7 +758,6 @@ static BIO *ossl_http_req_ctx_transfer(OSSL_HTTP_REQ_CTX *rctx)
         if (rv != -1)
             break;
         /* BIO_should_retry was true */
-        sending = 0;
         /* will not actually wait if rctx->max_time == 0 */
         if (BIO_wait(rctx->rbio, rctx->max_time, 100 /* milliseconds */) <= 0)
             return NULL;
@@ -767,7 +765,7 @@ static BIO *ossl_http_req_ctx_transfer(OSSL_HTTP_REQ_CTX *rctx)
 
     if (rv == 0) {
         if (rctx->redirection_url == NULL) { /* an error occurred */
-            if (sending && (rctx->state & OHS_NOREAD) != 0)
+            if (rctx->len_to_send > 0)
                 ERR_raise(ERR_LIB_HTTP, HTTP_R_ERROR_SENDING);
             else
                 ERR_raise(ERR_LIB_HTTP, HTTP_R_ERROR_RECEIVING);