From: Willy Tarreau Date: Wed, 2 Sep 2020 08:31:31 +0000 (+0200) Subject: MINOR: protocol: do not call proto->unbind_all() anymore X-Git-Tag: v2.3-dev4~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca2126230ae98e5d5a2d36707f1b3947a430f112;p=thirdparty%2Fhaproxy.git MINOR: protocol: do not call proto->unbind_all() anymore Similarly to previous commit about ->bind_all(), we have the same construct for ->unbind_all() which ought not to be used either. Let's make protocol_unbind_all() iterate over all listeners and directly call unbind_listener() instead. It's worth noting that for uxst there was originally a specific ->unbind_all() function but the simplifications that came over the years have resulted in a locally reimplemented version of the same function: the test on (state > LI_ASSIGNED) there is equivalent to the one on (state >= LI_PAUSED) that is used in do_unbind_listener(), and it seems these have been equivalent since at least commit dabf2e264 ("[MAJOR] added a new state to listeners")) (1.3.14). --- diff --git a/src/protocol.c b/src/protocol.c index faa634192d..84c85d2dd8 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -82,14 +82,14 @@ int protocol_bind_all(char *errmsg, int errlen) int protocol_unbind_all(void) { struct protocol *proto; + struct listener *listener; int err; err = 0; HA_SPIN_LOCK(PROTO_LOCK, &proto_lock); list_for_each_entry(proto, &protocols, list) { - if (proto->unbind_all) { - err |= proto->unbind_all(proto); - } + list_for_each_entry(listener, &proto->listeners, proto_list) + unbind_listener(listener); } HA_SPIN_UNLOCK(PROTO_LOCK, &proto_lock); return err;