From 576dba543b969989a23a810217fc28351cd2a6ed Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Fri, 16 Apr 2010 17:58:28 +0200 Subject: Support SRV servers in failover Adds a new failover API call fo_add_srv_server that allows the caller to specify a server that is later resolved into a list of specific servers using SRV requests. Also adds a new failover option that specifies how often should the servers resolved from SRV query considered valid until we need a refresh. The "real" servers to connect to are returned to the user as usual, using the fo_resolve_service_{send,recv} calls. Make SRV resolution work with c-ares 1.6 --- src/util/dlinklist.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/util') diff --git a/src/util/dlinklist.h b/src/util/dlinklist.h index be5ff914b..f323de702 100644 --- a/src/util/dlinklist.h +++ b/src/util/dlinklist.h @@ -110,6 +110,22 @@ do { \ } \ } while (0) +/* insert all elements from list2 after the given element 'el' in the + * first list */ +#define DLIST_ADD_LIST_AFTER(list1, el, list2, type) \ +do { \ + if (!(list1) || !(el) || !(list2)) { \ + DLIST_CONCATENATE(list1, list2, type); \ + } else { \ + type tmp; \ + for (tmp = (list2); tmp->next; tmp = tmp->next) ; \ + (list2)->prev = (el); \ + tmp->next = (el)->next; \ + (el)->next = (list2); \ + if ((el)->next != NULL) (el)->next->prev = tmp; \ + } \ +} while (0); + #define DLIST_FOR_EACH(p, list) \ for ((p) = (list); (p) != NULL; (p) = (p)->next) -- cgit