int found = 0;
/* Already attach to the session or not the connection owner */
- if (!LIST_ISEMPTY(&conn->session_list) || conn->owner != sess)
+ if (!LIST_ISEMPTY(&conn->session_list) || (conn->owner && conn->owner != sess))
return 1;
list_for_each_entry(srv_list, &sess->srv_list, srv_list) {
/* attach the connection to the session private list
*/
conn->owner = s->sess;
- session_add_conn(conn->owner, conn, conn->target);
+ session_add_conn(s->sess, conn, conn->target);
}
else {
LIST_ADDQ(&srv->available_conns[tid], mt_list_to_list(&conn->list));
((s->be->options & PR_O_REUSE_MASK) == PR_O_REUSE_SAFE &&
srv_conn->mux->flags & MX_FL_HOL_RISK)) {
/* If it fail now, the same will be done in mux->detach() callback */
- session_add_conn(srv_conn->owner, srv_conn, srv_conn->target);
+ session_add_conn(s->sess, srv_conn, srv_conn->target);
}
}
goto fail;
if (sess && obj_type(sess->origin) == OBJ_TYPE_CHECK) {
- if (conn_install_mux_chk(conn, conn->ctx, conn->owner) < 0)
+ if (conn_install_mux_chk(conn, conn->ctx, sess) < 0)
goto fail;
}
- else if (conn_install_mux_be(conn, conn->ctx, conn->owner) < 0)
+ else if (conn_install_mux_be(conn, conn->ctx, sess) < 0)
goto fail;
srv = objt_server(conn->target);
LIST_ADDQ(&srv->available_conns[tid], mt_list_to_list(&conn->list));
else if (conn->flags & CO_FL_PRIVATE) {
/* If it fail now, the same will be done in mux->detach() callback */
- session_add_conn(conn->owner, conn, conn->target);
+ session_add_conn(sess, conn, conn->target);
}
return 0;
fail: