From: Olivier Houchard Date: Tue, 25 Mar 2025 16:24:46 +0000 (+0000) Subject: MINOR: lbprm: Add method to deinit server and proxy X-Git-Tag: v3.2-dev9~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2a9436f96;p=thirdparty%2Fhaproxy.git MINOR: lbprm: Add method to deinit server and proxy Add two new methods to lbprm, server_deinit() and proxy_deinit(), in case something should be done at the lbprm level when removing servers and proxies. --- diff --git a/include/haproxy/backend-t.h b/include/haproxy/backend-t.h index f0a469518..d7e57a772 100644 --- a/include/haproxy/backend-t.h +++ b/include/haproxy/backend-t.h @@ -181,6 +181,8 @@ struct lbprm { void (*server_take_conn)(struct server *); /* to be called when connection is assigned */ void (*server_drop_conn)(struct server *); /* to be called when connection is dropped */ void (*server_requeue)(struct server *); /* function used to place the server where it must be */ + void (*proxy_deinit)(struct proxy *); /* to be called when we're destroying the proxy */ + void (*server_deinit)(struct server *); /* to be called when we're destroying the server */ }; #endif /* _HAPROXY_BACKEND_T_H */ diff --git a/src/proxy.c b/src/proxy.c index b7b6bf192..9b786b33a 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -372,6 +372,9 @@ void free_proxy(struct proxy *p) */ srv_free_params(&p->defsrv); + if (p->lbprm.proxy_deinit) + p->lbprm.proxy_deinit(p); + list_for_each_entry_safe(l, l_next, &p->conf.listeners, by_fe) { guid_remove(&l->guid); LIST_DELETE(&l->by_fe); diff --git a/src/server.c b/src/server.c index 6d9e696ca..2d7bba5bc 100644 --- a/src/server.c +++ b/src/server.c @@ -3114,6 +3114,9 @@ struct server *srv_drop(struct server *srv) EXTRA_COUNTERS_FREE(srv->extra_counters); + if (srv->proxy->lbprm.server_deinit) + srv->proxy->lbprm.server_deinit(srv); + ha_free(&srv); end: