From: Amaury Denoyelle Date: Wed, 29 Oct 2025 16:31:13 +0000 (+0100) Subject: TMP debug connection reuse hash X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40bfb854225acf73f2dd4e5273b74b3bab420a42;p=thirdparty%2Fhaproxy.git TMP debug connection reuse hash --- diff --git a/include/haproxy/backend.h b/include/haproxy/backend.h index 3fae24280..b13f0b1a0 100644 --- a/include/haproxy/backend.h +++ b/include/haproxy/backend.h @@ -50,7 +50,8 @@ int64_t be_calculate_conn_hash(struct server *srv, struct stream *strm, struct session *sess, struct sockaddr_storage *src, struct sockaddr_storage *dst, - struct ist name); + struct ist name, + char **debug_str); int be_reuse_connection(int64_t hash, struct session *sess, struct proxy *be, struct server *srv, struct stconn *sc, enum obj_type *target, int not_first_req); diff --git a/src/backend.c b/src/backend.c index d0c1b8077..ed42dbeee 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1584,7 +1584,7 @@ int64_t be_calculate_conn_hash(struct server *srv, struct stream *strm, struct session *sess, struct sockaddr_storage *src, struct sockaddr_storage *dst, - struct ist name) + struct ist name, char **debug_str) { struct conn_hash_params hash_params; @@ -1596,18 +1596,42 @@ int64_t be_calculate_conn_hash(struct server *srv, struct stream *strm, /* 1. target */ hash_params.target = srv ? &srv->obj_type : strm->target; + if (debug_str) + memprintf(debug_str, "target=%p", hash_params.target); /* 2. pool-conn-name */ if (istlen(name)) { hash_params.name_prehash = conn_hash_prehash(istptr(name), istlen(name)); + if (debug_str) { + if (*debug_str) memprintf(debug_str, "%s name=%s", *debug_str, ist0(name)); + else memprintf(debug_str, "name=%s", ist0(name)); + } } /* 3. destination address */ hash_params.dst_addr = dst; + if (dst && debug_str) { + char dstbuf[INET6_ADDRSTRLEN]; + ushort dstport; + + addr_to_str(dst, dstbuf, sizeof(dstbuf)); + dstport = get_host_port(dst); + if (*debug_str) memprintf(debug_str, "%s dst=%s:%hu", *debug_str, dstbuf, dstport); + else memprintf(debug_str, "dst=%s:%hu", dstbuf, dstport); + } /* 4. source address */ hash_params.src_addr = src; + if (src && debug_str) { + char srcbuf[INET6_ADDRSTRLEN]; + ushort srcport; + + addr_to_str(src, srcbuf, sizeof(srcbuf)); + srcport = get_host_port(src); + if (*debug_str) memprintf(debug_str, "%s src=%s:%hu", *debug_str, srcbuf, srcport); + else memprintf(debug_str, "src=%s:%hu", srcbuf, srcport); + } /* 5. proxy protocol */ if (strm && srv && srv->pp_opts & SRV_PP_ENABLED) {