From 2a9436f96bf1c90983173561059c52f7c245df3e Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Tue, 25 Mar 2025 16:24:46 +0000 Subject: [PATCH] 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. --- include/haproxy/backend-t.h | 2 ++ src/proxy.c | 3 +++ src/server.c | 3 +++ 3 files changed, 8 insertions(+) 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: -- 2.39.5