]> jfr.im git - solanum.git/blobdiff - authd/providers/opm.c
Revert "authd: change to lists instead of dictionaries for various things"
[solanum.git] / authd / providers / opm.c
index 9fdf0acafb506d2347815216f7f866700e8fd278..560eecee09f121df929b1b4994f5bd642b1ed17b 100644 (file)
@@ -196,10 +196,11 @@ read_opm_reply(rb_fde_t *F, void *data)
 static void
 accept_opm(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t len, void *data)
 {
+       struct auth_client *auth = NULL;
        struct opm_listener *listener = data;
        struct rb_sockaddr_storage localaddr;
        unsigned int llen = sizeof(struct rb_sockaddr_storage);
-       rb_dlink_node *ptr;
+       rb_dictionary_iter iter;
 
        if(status != 0 || listener == NULL)
        {
@@ -215,10 +216,8 @@ accept_opm(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t len, voi
        }
 
        /* Correlate connection with client(s) */
-       RB_DLINK_FOREACH(ptr, auth_clients.head)
+       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
        {
-               struct auth_client *auth = ptr->data;
-
                if(GET_SS_FAMILY(&auth->c_addr) != GET_SS_FAMILY(&localaddr))
                        continue;
 
@@ -468,9 +467,10 @@ establish_connection(struct auth_client *auth, struct opm_proxy *proxy)
 static bool
 create_listener(const char *ip, uint16_t port)
 {
+       struct auth_client *auth;
        struct opm_listener *listener;
        struct rb_sockaddr_storage addr;
-       rb_dlink_node *ptr, *nptr;
+       rb_dictionary_iter iter;
        rb_fde_t *F;
        int opt = 1;
 
@@ -560,9 +560,8 @@ create_listener(const char *ip, uint16_t port)
        /* Cancel clients that may be on old listener
         * XXX - should rescan clients that need it
         */
-       RB_DLINK_FOREACH_SAFE(ptr, nptr, auth_clients.head)
+       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
        {
-               struct auth_client *auth = ptr->data;
                opm_cancel(auth);
        }
 
@@ -675,12 +674,12 @@ opm_cancel(struct auth_client *auth)
 static void
 opm_destroy(void)
 {
-       rb_dlink_node *ptr, *nptr;
+       struct auth_client *auth;
+       rb_dictionary_iter iter;
 
        /* Nuke all opm lookups */
-       RB_DLINK_FOREACH_SAFE(ptr, nptr, auth_clients.head)
+       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
        {
-               struct auth_client *auth = ptr->data;
                opm_cancel(auth);
        }
 }
@@ -709,7 +708,8 @@ set_opm_enabled(const char *key __unused, int parc __unused, const char **parv)
        {
                if(listeners[LISTEN_IPV4].F != NULL || listeners[LISTEN_IPV6].F != NULL)
                {
-                       rb_dlink_node *ptr, *nptr;
+                       struct auth_client *auth;
+                       rb_dictionary_iter iter;
 
                        /* Close the listening socket */
                        if(listeners[LISTEN_IPV4].F != NULL)
@@ -720,9 +720,8 @@ set_opm_enabled(const char *key __unused, int parc __unused, const char **parv)
 
                        listeners[LISTEN_IPV4].F = listeners[LISTEN_IPV6].F = NULL;
 
-                       RB_DLINK_FOREACH_SAFE(ptr, nptr, auth_clients.head)
+                       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
                        {
-                               struct auth_client *auth = ptr->data;
                                opm_cancel(auth);
                        }
                }
@@ -815,10 +814,11 @@ create_opm_scanner(const char *key __unused, int parc __unused, const char **par
 static void
 delete_opm_scanner(const char *key __unused, int parc __unused, const char **parv)
 {
+       struct auth_client *auth;
        struct opm_proxy *proxy;
        protocol_t proto = get_protocol_from_string(parv[0]);
        int iport = atoi(parv[1]);
-       rb_dlink_node *ptr, *nptr;
+       rb_dictionary_iter iter;
 
        if(iport <= 0 || iport > 65535)
        {
@@ -839,18 +839,17 @@ delete_opm_scanner(const char *key __unused, int parc __unused, const char **par
        }
 
        /* Abort remaining clients on this scanner */
-       RB_DLINK_FOREACH_SAFE(ptr, nptr, auth_clients.head)
+       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
        {
-               struct auth_client *auth = ptr->data;
+               rb_dlink_node *ptr;
                struct opm_lookup *lookup = get_provider_data(auth, SELF_PID);
-               rb_dlink_node *optr;
 
                if(lookup == NULL)
                        continue;
 
-               RB_DLINK_FOREACH(optr, lookup->scans.head)
+               RB_DLINK_FOREACH(ptr, lookup->scans.head)
                {
-                       struct opm_scan *scan = optr->data;
+                       struct opm_scan *scan = ptr->data;
 
                        if(scan->proxy->port == proxy->port && scan->proxy->proto == proxy->proto)
                        {
@@ -876,7 +875,9 @@ delete_opm_scanner(const char *key __unused, int parc __unused, const char **par
 static void
 delete_opm_scanner_all(const char *key __unused, int parc __unused, const char **parv __unused)
 {
+       struct auth_client *auth;
        rb_dlink_node *ptr, *nptr;
+       rb_dictionary_iter iter;
 
        RB_DLINK_FOREACH_SAFE(ptr, nptr, proxy_scanners.head)
        {
@@ -884,9 +885,8 @@ delete_opm_scanner_all(const char *key __unused, int parc __unused, const char *
                rb_dlinkDelete(ptr, &proxy_scanners);
        }
 
-       RB_DLINK_FOREACH_SAFE(ptr, nptr, auth_clients.head)
+       RB_DICTIONARY_FOREACH(auth, &iter, auth_clients)
        {
-               struct auth_client *auth = ptr->data;
                opm_cancel(auth);
        }