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();