]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
When failing, we need to explicitly set the connection state.
authorGraham Leggett <minfrin@apache.org>
Sat, 22 Jan 2022 12:09:12 +0000 (12:09 +0000)
committerGraham Leggett <minfrin@apache.org>
Sat, 22 Jan 2022 12:09:12 +0000 (12:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1897336 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/mod_ssl.c
support/ab.c

index 3108cd877ef710a9dae39c5bb5a649c8976fd757..1a0b8c9fc2660177f8b3ef39fd3c344846c46639 100644 (file)
@@ -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 {
index 13a453f3185331e09f4c588534b32a61b45bea8f..4a300b0f2e1e43233dd1e077bcf729b8c9dc73a5 100644 (file)
@@ -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;