You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jf...@apache.org on 2021/03/10 16:24:22 UTC

svn commit: r1887439 - /httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c

Author: jfclere
Date: Wed Mar 10 16:24:21 2021
New Revision: 1887439

URL: http://svn.apache.org/viewvc?rev=1887439&view=rev
Log:
Fix the fixed timeout, thanks RĂ¼diger.
And set the current_thread of the connection.

Modified:
    httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c?rev=1887439&r1=1887438&r2=1887439&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_hcheck.c Wed Mar 10 16:24:21 2021
@@ -615,7 +615,7 @@ static int hc_get_backend(const char *pr
     return hc_determine_connection(ctx, hc, &(*backend)->addr, ptemp);
 }
 
-static apr_status_t hc_check_cping(baton_t *baton)
+static apr_status_t hc_check_cping(baton_t *baton, apr_thread_t *thread)
 {
     int status;
     sctx_t *ctx = baton->ctx;
@@ -641,8 +641,18 @@ static apr_status_t hc_check_cping(baton
         return backend_cleanup("HCCPING", backend, ctx->s, status);
     }
     set_request_connection(r, backend->connection);
+    backend->connection->current_thread = thread;
 
-    timeout = apr_time_from_sec(10); /* 10 seconds */
+    if (hc->s->ping_timeout_set) {
+        timeout = hc->s->ping_timeout;
+    } else if ( hc->s->conn_timeout_set) {
+        timeout = hc->s->conn_timeout;
+    } else if ( hc->s->timeout_set) {
+        timeout = hc->s->timeout;
+    } else {
+        /* default to socket timeout */
+        apr_socket_timeout_get(backend->sock, &timeout); 
+    }
     status = ajp_handle_cping_cpong(backend->sock, r, timeout);
     ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, baton->ctx->s, "HCCPING done %d", status);
     return backend_cleanup("HCCPING", backend, ctx->s, status);
@@ -788,7 +798,7 @@ static int hc_read_body(request_rec *r,
  * then apply those to the resulting response, otherwise
  * any status code 2xx or 3xx is considered "passing"
  */
-static apr_status_t hc_check_http(baton_t *baton)
+static apr_status_t hc_check_http(baton_t *baton, apr_thread_t *thread)
 {
     int status;
     proxy_conn_rec *backend = NULL;
@@ -818,6 +828,7 @@ static apr_status_t hc_check_http(baton_
         return backend_cleanup("HCOH", backend, ctx->s, status);
     }
     set_request_connection(r, backend->connection);
+    backend->connection->current_thread = thread;
 
     bb = apr_brigade_create(r->pool, r->connection->bucket_alloc);
 
@@ -884,10 +895,10 @@ static void * APR_THREAD_FUNC hc_check(a
         rv = hc_check_tcp(baton);
     }
     else if (hc->s->method == CPING) {
-        rv = hc_check_cping(baton);
+        rv = hc_check_cping(baton, thread);
     }
     else {
-        rv = hc_check_http(baton);
+        rv = hc_check_http(baton, thread);
     }
 
     now = apr_time_now();