CLEANUP: map/cli: always detach the backref from the list after "show map"
There's no point checking the state before deciding to detach the backref
on "show map", it should always be done if the list is not empty. Note
that being empty guarantees that it's not linked into the list, and
conversely not being empty guarantees that it's in the list, hence the
test doesn't need to be performed under the lock.
diff --git a/src/map.c b/src/map.c
index fea9a1d..dea9bcd 100644
--- a/src/map.c
+++ b/src/map.c
@@ -352,12 +352,9 @@
/* If we're forced to shut down, we might have to remove our
* reference to the last ref_elt being dumped.
*/
- if (ctx->state == STATE_LIST) {
+ if (!LIST_ISEMPTY(&ctx->bref.users)) {
HA_SPIN_LOCK(PATREF_LOCK, &ctx->ref->lock);
- if (!LIST_ISEMPTY(&ctx->bref.users)) {
- LIST_DELETE(&ctx->bref.users);
- LIST_INIT(&ctx->bref.users);
- }
+ LIST_DEL_INIT(&ctx->bref.users);
HA_SPIN_UNLOCK(PATREF_LOCK, &ctx->ref->lock);
}
return 1;
@@ -687,10 +684,9 @@
{
struct show_map_ctx *ctx = appctx->svcctx;
- if (ctx->state == STATE_LIST) {
+ if (!LIST_ISEMPTY(&ctx->bref.users)) {
HA_SPIN_LOCK(PATREF_LOCK, &ctx->ref->lock);
- if (!LIST_ISEMPTY(&ctx->bref.users))
- LIST_DELETE(&ctx->bref.users);
+ LIST_DEL_INIT(&ctx->bref.users);
HA_SPIN_UNLOCK(PATREF_LOCK, &ctx->ref->lock);
}
}