MAJOR: servers: propagate server status changes asynchronously.
In order to prepare multi-thread development, code was re-worked
to propagate changes asynchronoulsy.
Servers with pending status changes are registered in a list
and this one is processed and emptied only once 'run poll' loop.
Operational status changes are performed before administrative
status changes.
In a case of multiple operational status change or admin status
change in the same 'run poll' loop iteration, those changes are
merged to reach only the targeted status.
diff --git a/include/proto/server.h b/include/proto/server.h
index 0b238a5..1a649f5 100644
--- a/include/proto/server.h
+++ b/include/proto/server.h
@@ -50,6 +50,9 @@
int srv_set_addr_via_libc(struct server *srv, int *err_code);
int srv_init_addr(void);
struct server *cli_find_server(struct appctx *appctx, char *arg);
+void servers_update_status(void);
+
+extern struct list updated_servers;
/* functions related to server name resolution */
int snr_update_srv_status(struct server *s, int has_no_ip);