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.
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index f9a529f..9418ff2 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -184,8 +184,10 @@
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);
}