From: Dr. David von Oheimb Date: Mon, 8 Mar 2021 12:47:33 +0000 (+0100) Subject: OSSL_HTTP_REQ_CTX_transfer(): improve distinction of send error vs. receive error X-Git-Tag: openssl-3.0.0-alpha14~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e6174b1b58d3545b2ef34fd7262dadd2149ec15;p=thirdparty%2Fopenssl.git OSSL_HTTP_REQ_CTX_transfer(): improve distinction of send error vs. receive error Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14630) --- diff --git a/crypto/http/http_client.c b/crypto/http/http_client.c index eec13973fb7..9c2b593a2d3 100644 --- a/crypto/http/http_client.c +++ b/crypto/http/http_client.c @@ -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);