/* first, set unique connection parameters and then calculate hash */
memset(&hash_params, 0, sizeof(hash_params));
- hash = conn_calculate_hash(&hash_params);
+
+ srv = objt_server(s->target);
+ hash_params.srv = srv;
+
+ if (srv)
+ hash = conn_calculate_hash(&hash_params);
/* This will catch some corner cases such as lying connections resulting from
* retries or connect timeouts but will rarely trigger.
*/
si_release_endpoint(&s->si[1]);
- srv = objt_server(s->target);
-
/* do not reuse if mode is http or if avail list is not allocated */
if ((s->be->mode != PR_MODE_HTTP) || (srv && !srv->available_conns_tree))
goto skip_reuse;
buf = trash.area;
+ conn_hash_update(buf, &idx, ¶ms->srv, sizeof(params->srv), &hash_flags, 0);
+
hash = conn_hash_digest(buf, idx, hash_flags);
return hash;
}