]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: lbprm: Add method to deinit server and proxy
authorOlivier Houchard <ohouchard@haproxy.com>
Tue, 25 Mar 2025 16:24:46 +0000 (16:24 +0000)
committerOlivier Houchard <cognet@ci0.org>
Tue, 1 Apr 2025 16:05:30 +0000 (18:05 +0200)
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
src/proxy.c
src/server.c

index f0a46951832bfa4f09576dfebb7efae6cc2e0369..d7e57a7726051c91d4d67755c36321cb882a19eb 100644 (file)
@@ -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 */
index b7b6bf192f2ca36a576bfc6e2b8975980b7db130..9b786b33a3d5c14bf676a5852361ad7c23352c35 100644 (file)
@@ -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);
index 6d9e696ca76817ceb5a6a784b2ee4df2005f6378..2d7bba5bc007cb019dcc7d2d99d5a97efc4e6403 100644 (file)
@@ -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: