From: Amaury Denoyelle Date: Thu, 30 Oct 2025 09:34:45 +0000 (+0100) Subject: TMP X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2F20251030-ade-quic-fix-backend-checks;p=thirdparty%2Fhaproxy.git TMP --- diff --git a/src/backend.c b/src/backend.c index ed42dbeee..b4b0d322a 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1824,6 +1824,7 @@ int connect_server(struct stream *s) int err; struct sockaddr_storage *bind_addr = NULL; int64_t hash = 0; + char *hash_debug = NULL; /* in standard configuration, srv will be valid * it can be NULL for dispatch mode or transparent backend */ @@ -1859,9 +1860,10 @@ int connect_server(struct stream *s) } } - hash = be_calculate_conn_hash(srv, s, s->sess, bind_addr, s->scb->dst, name); + hash = be_calculate_conn_hash(srv, s, s->sess, bind_addr, s->scb->dst, name, &hash_debug); err = be_reuse_connection(hash, s->sess, s->be, srv, s->scb, s->target, not_first_req); + fprintf(stderr, "connection hash 0x%llx [%s]\n", (ullong)hash, hash_debug); if (err == SF_ERR_INTERNAL) return err; diff --git a/src/tcpcheck.c b/src/tcpcheck.c index b4c8fe5fe..7c66eefa5 100644 --- a/src/tcpcheck.c +++ b/src/tcpcheck.c @@ -1273,6 +1273,7 @@ enum tcpcheck_eval_ret tcpcheck_eval_connect(struct check *check, struct tcpchec struct tcpcheck_rule *next; struct buffer *auto_sni = NULL; int status, port; + char *hash_debug = NULL; int check_type; TRACE_ENTER(CHK_EV_TCPCHK_CONN, check); @@ -1324,7 +1325,7 @@ enum tcpcheck_eval_ret tcpcheck_eval_connect(struct check *check, struct tcpchec int64_t hash; int conn_err; - TRACE_DEVEL("trying connection reuse for check", CHK_EV_TCPCHK_CONN, check); + TRACE_USER("trying connection reuse for check", CHK_EV_TCPCHK_CONN, check); if (check->pool_conn_name) pool_conn_name = ist(check->pool_conn_name); @@ -1347,25 +1348,29 @@ enum tcpcheck_eval_ret tcpcheck_eval_connect(struct check *check, struct tcpchec dst = NULL; } - hash = be_calculate_conn_hash(s, NULL, check->sess, NULL, dst, pool_conn_name); + hash = be_calculate_conn_hash(s, NULL, check->sess, NULL, dst, pool_conn_name, &hash_debug); conn_err = be_reuse_connection(hash, check->sess, s->proxy, s, check->sc, &s->obj_type, 0); + fprintf(stderr, "check hash 0x%llx [%s]\n", (ullong)hash, hash_debug); if (conn_err == SF_ERR_INTERNAL) { - TRACE_ERROR("error during connection reuse", CHK_EV_TCPCHK_CONN|CHK_EV_TCPCHK_ERR, check); + TRACE_USER("error during connection reuse", CHK_EV_TCPCHK_CONN|CHK_EV_TCPCHK_ERR, check); set_server_check_status(check, HCHK_STATUS_SOCKERR, trash.area); ret = TCPCHK_EVAL_STOP; goto out; } else if (conn_err == SF_ERR_NONE) { - TRACE_STATE("check performed with connection reuse", CHK_EV_TCPCHK_CONN, check); + TRACE_USER("check performed with connection reuse", CHK_EV_TCPCHK_CONN, check); conn = __sc_conn(check->sc); conn_set_owner(conn, check->sess, NULL); /* connection will be reinsert in idle conn pool due to missing conn_set_private(). */ status = SF_ERR_NONE; goto skip_connect; } + + TRACE_USER("no connection eligible", CHK_EV_TCPCHK_CONN, check); } + TRACE_USER("init a new connection", CHK_EV_TCPCHK_CONN, check); /* No connection, prepare a new one */ conn = conn_new((s ? &s->obj_type : &proxy->obj_type)); if (!conn) {