MEDIUM: session: do not free a session until no stream references it

We now refrain from clearing a session's variables, counters, and from
releasing it as long as at least one stream references it. For now it
never happens but with H2 this will be mandatory to avoid double frees.
This commit is contained in:
Willy Tarreau 2017-06-27 15:25:14 +02:00
parent 2bfd35885e
commit f92a73d2fc

View File

@ -68,6 +68,8 @@ struct session *session_new(struct proxy *fe, struct listener *li, enum obj_type
void session_free(struct session *sess)
{
if (!LIST_ISEMPTY(&sess->streams))
return;
session_store_counters(sess);
vars_prune_per_sess(&sess->vars);
pool_free2(pool2_session, sess);