BUG/MINOR: spoe: do not assume agent->rt is valid on exit

As reported by Christopher, we may call spoe_release_agent() when leaving
after an allocation failure or a config parse error. We must not assume
agent->rt is valid there as the allocation could have failed.

This should be backported to 1.9 and 1.8.
This commit is contained in:
Willy Tarreau 2019-02-07 14:22:52 +01:00
parent 4f03ab06a9
commit 3ddcf7643c

View File

@ -184,8 +184,10 @@ spoe_release_agent(struct spoe_agent *agent)
LIST_DEL(&grp->list);
spoe_release_group(grp);
}
for (i = 0; i < global.nbthread; ++i)
HA_SPIN_DESTROY(&agent->rt[i].lock);
if (agent->rt) {
for (i = 0; i < global.nbthread; ++i)
HA_SPIN_DESTROY(&agent->rt[i].lock);
}
free(agent->rt);
free(agent);
}