]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: connections: Don't forget to unlock when killing a connection.
authorOlivier Houchard <ohouchard@haproxy.com>
Fri, 31 Jan 2020 16:22:08 +0000 (17:22 +0100)
committerOlivier Houchard <cognet@ci0.org>
Fri, 31 Jan 2020 16:25:37 +0000 (17:25 +0100)
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.

src/backend.c

index 45fe5366a255223cdff26370add92be17e1fadb0..39791f6f648bfdba6f1183d73e7aa125c66c84d7 100644 (file)
@@ -1255,6 +1255,7 @@ int connect_server(struct stream *s)
                                        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]);