BUG/MEDIUM: connections: Don't forget to unlock when killing a connection.
Commit 140237471e408736bb7162e68c572c710a66a526 made sure we hold the
toremove_lock for the corresponding thread before removing a connection
from its idle_orphan_conns list, however it failed to unlock it if we
found a connection, leading to a deadlock, so add the missing deadlock.
This should be backported to 2.1 and 2.0.
diff --git a/src/backend.c b/src/backend.c
index 45fe536..39791f6 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1255,6 +1255,7 @@
MT_LIST_ADDQ(&toremove_connections[i],
(struct mt_list *)&tokill_conn->list);
task_wakeup(idle_conn_cleanup[i], TASK_WOKEN_OTHER);
+ HA_SPIN_UNLOCK(OTHER_LOCK, &toremove_lock[tid]);
break;
}
HA_SPIN_UNLOCK(OTHER_LOCK, &toremove_lock[tid]);