diff --git a/include/haproxy/server-t.h b/include/haproxy/server-t.h index 555eace61..e2233a4a0 100644 --- a/include/haproxy/server-t.h +++ b/include/haproxy/server-t.h @@ -669,6 +669,7 @@ struct event_hdl_cb_data_server_inetaddr { struct { struct server_inetaddr prev; struct server_inetaddr next; + struct server_inetaddr_updater updater; } safe; /* no unsafe data */ }; diff --git a/src/server.c b/src/server.c index e9df3f416..44a757069 100644 --- a/src/server.c +++ b/src/server.c @@ -436,7 +436,8 @@ void _srv_event_hdl_prepare_state(struct event_hdl_cb_data_server_state *cb_data */ static void _srv_event_hdl_prepare_inetaddr(struct event_hdl_cb_data_server_inetaddr *cb_data, struct server *srv, - const struct server_inetaddr *next_inetaddr) + const struct server_inetaddr *next_inetaddr, + struct server_inetaddr_updater updater) { struct server_inetaddr prev_inetaddr; @@ -451,6 +452,9 @@ static void _srv_event_hdl_prepare_inetaddr(struct event_hdl_cb_data_server_inet /* next */ cb_data->safe.next = *next_inetaddr; + + /* updater */ + cb_data->safe.updater = updater; } /* server event publishing helper: publish in both global and @@ -3945,7 +3949,8 @@ int server_set_inetaddr(struct server *s, if (ip_change || port_change) { _srv_event_hdl_prepare(&cb_data.common, s, 0); _srv_event_hdl_prepare_inetaddr(&cb_data.addr, s, - inetaddr); + inetaddr, + updater); /* server_atomic_sync_task will apply the changes for us */ _srv_event_hdl_publish(EVENT_HDL_SUB_SERVER_INETADDR, cb_data, s);