From: Graham Leggett Date: Sat, 22 Jan 2022 12:09:12 +0000 (+0000) Subject: When failing, we need to explicitly set the connection state. X-Git-Tag: 2.5.0-alpha2-ci-test-only~558 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=384b51f21fa9a44c09dbc8e256fa7c4a47d4ff6d;p=thirdparty%2Fapache%2Fhttpd.git When failing, we need to explicitly set the connection state. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1897336 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ssl/mod_ssl.c b/modules/ssl/mod_ssl.c index 3108cd877ef..1a0b8c9fc26 100644 --- a/modules/ssl/mod_ssl.c +++ b/modules/ssl/mod_ssl.c @@ -714,6 +714,8 @@ static int ssl_hook_process_connection(conn_rec* c) /* Take advantage of an async MPM. If we see an EAGAIN, * loop round and don't block. */ + conn_state_t *cs = c->cs; + apr_status_t rv; rv = ap_get_brigade(c->input_filters, temp, @@ -731,7 +733,8 @@ static int ssl_hook_process_connection(conn_rec* c) /* we failed, give up */ status = DONE; - c->aborted = 1; + cs->state = CONN_STATE_LINGER; + } } else { diff --git a/support/ab.c b/support/ab.c index 13a453f3185..4a300b0f2e1 100644 --- a/support/ab.c +++ b/support/ab.c @@ -1434,7 +1434,7 @@ static void start_connect(struct connection * c) } #endif if ((rv = apr_socket_connect(c->aprsock, destsa)) != APR_SUCCESS) { - if (APR_STATUS_IS_EINPROGRESS(rv)) { + if (APR_STATUS_IS_EINPROGRESS(rv) || APR_STATUS_IS_EINTR(rv)) { set_conn_state(c, STATE_CONNECTING); c->rwrite = 0; return;