]> jfr.im git - solanum.git/blobdiff - authd/authd.c
Merge branch 'master' into authd-framework-2
[solanum.git] / authd / authd.c
index 298d3c4f7819779fb8a6cc54894facd10fd65784..acd5bc1e21d9af68ea3557be26985f3741629ce2 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "authd.h"
 #include "dns.h"
+#include "provider.h"
 
 #define MAXPARA 10
 
@@ -28,8 +29,9 @@ static void handle_stat(int parc, char *parv[]);
 
 rb_helper *authd_helper = NULL;
 authd_cmd_handler authd_cmd_handlers[256] = {
-       ['C'] = handle_reload,
+       ['C'] = handle_new_connection,
        ['D'] = resolve_dns,
+       ['R'] = handle_reload,
        ['S'] = handle_stat,
 };
 
@@ -47,10 +49,12 @@ handle_stat(int parc, char *parv[])
        authd_stat_handler handler;
 
        if(parc < 3)
-                /* XXX Should log this somehow */
+       {
+               warn_opers(L_CRIT, "BUG: handle_stat received too few parameters (at least 3 expected, got %d)", parc);
                return;
+       }
 
-       if (!(handler = authd_stat_handlers[parv[2][0]]))
+       if (!(handler = authd_stat_handlers[(unsigned char)parv[2][0]]))
                return;
 
        handler(parv[1], parv[2][0]);
@@ -62,10 +66,18 @@ handle_reload(int parc, char *parv[])
        authd_reload_handler handler;
 
        if(parc < 2)
-                /* XXX Should log this somehow */
+       {
+               /* Reload all handlers */
+               for(size_t i = 0; i < sizeof(authd_reload_handlers); i++)
+               {
+                       if ((handler = authd_reload_handlers[(unsigned char) i]) != NULL)
+                               handler(parv[1][0]);
+               }
+
                return;
+       }
 
-       if (!(handler = authd_reload_handlers[parv[1][0]]))
+       if (!(handler = authd_reload_handlers[(unsigned char)parv[1][0]]))
                return;
 
        handler(parv[1][0]);
@@ -87,7 +99,7 @@ parse_request(rb_helper *helper)
                if(parc < 1)
                        continue;
 
-               handler = authd_cmd_handlers[parv[0][0]];
+               handler = authd_cmd_handlers[(unsigned char)parv[0][0]];
                if (handler != NULL)
                        handler(parc, parv);
        }
@@ -99,7 +111,7 @@ error_cb(rb_helper *helper)
        exit(1);
 }
 
-#ifndef WINDOWS
+#ifndef _WIN32
 static void
 dummy_handler(int sig)
 {
@@ -110,7 +122,7 @@ dummy_handler(int sig)
 static void
 setup_signals(void)
 {
-#ifndef WINDOWS
+#ifndef _WIN32
        struct sigaction act;
 
        act.sa_flags = 0;
@@ -151,6 +163,7 @@ main(int argc, char *argv[])
        rb_set_time();
        setup_signals();
        init_resolver();
+       init_providers();
        rb_init_prng(NULL, RB_PRNG_DEFAULT);
 
        rb_helper_loop(authd_helper, 0);