]> jfr.im git - solanum.git/blobdiff - authd/authd.c
ERROR instead of NOTICE for failed WEBIRC
[solanum.git] / authd / authd.c
index b122db2ee71f642f0c942b809cd1ddecea442a57..23ac2a4bb5c99f4be00386e5c7c7050dd3030fd7 100644 (file)
@@ -1,5 +1,5 @@
 /* authd/authd.c - main code for authd
- * Copyright (c) 2016 William Pitcock <nenolod@dereferenced.org>
+ * Copyright (c) 2016 Ariadne Conill <ariadne@dereferenced.org>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -25,6 +25,7 @@
 
 #define MAXPARA 10
 
+static void error_cb(rb_helper *helper) __attribute__((noreturn));
 static void handle_reload(int parc, char *parv[]);
 static void handle_stat(int parc, char *parv[]);
 static void handle_options(int parc, char *parv[]);
@@ -53,7 +54,7 @@ static void
 handle_stat(int parc, char *parv[])
 {
        authd_stat_handler handler;
-       long lrid;
+       unsigned long long rid;
 
        if(parc < 3)
        {
@@ -61,16 +62,16 @@ handle_stat(int parc, char *parv[])
                return;
        }
 
-       if((lrid = strtol(parv[1], NULL, 16)) > UINT32_MAX)
+       if((rid = strtoull(parv[1], NULL, 16)) > UINT32_MAX)
        {
-               warn_opers(L_CRIT, "BUG: handle_stat got a rid that was too large: %lx", lrid);
+               warn_opers(L_CRIT, "BUG: handle_stat got a rid that was too large: %s", parv[1]);
                return;
        }
 
        if (!(handler = authd_stat_handlers[(unsigned char)parv[2][0]]))
                return;
 
-       handler((uint32_t)lrid, parv[2][0]);
+       handler((uint32_t)rid, parv[2][0]);
 }
 
 static void
@@ -78,9 +79,9 @@ handle_options(int parc, char *parv[])
 {
        struct auth_opts_handler *handler;
 
-       if(parc < 3)
+       if(parc < 2)
        {
-               warn_opers(L_CRIT, "BUG: handle_options received too few parameters (at least 3 expected, got %d)", parc);
+               warn_opers(L_CRIT, "BUG: handle_options received too few parameters (at least 2 expected, got %d)", parc);
                return;
        }
 
@@ -150,18 +151,15 @@ error_cb(rb_helper *helper)
        exit(EX_ERROR);
 }
 
-#ifndef _WIN32
 static void
 dummy_handler(int sig)
 {
        return;
 }
-#endif
 
 static void
 setup_signals(void)
 {
-#ifndef _WIN32
        struct sigaction act;
 
        act.sa_flags = 0;
@@ -184,13 +182,6 @@ setup_signals(void)
 
        act.sa_handler = dummy_handler;
        sigaction(SIGALRM, &act, 0);
-#endif
-}
-
-static void
-do_exit(void)
-{
-       destroy_providers();
 }
 
 int
@@ -208,15 +199,18 @@ main(int argc, char *argv[])
        rb_set_time();
        setup_signals();
 
-       authd_option_handlers = rb_dictionary_create("authd options handlers", strcasecmp);
+       authd_option_handlers = rb_dictionary_create("authd options handlers", rb_strcasecmp);
 
        init_resolver();
        init_providers();
        rb_init_prng(NULL, RB_PRNG_DEFAULT);
 
-       atexit(do_exit);
-
        rb_helper_loop(authd_helper, 0);
 
+       /*
+        * XXX this function will never be called from here -- is it necessary?
+        */
+       destroy_providers();
+
        return 0;
 }