src/nexus.c
changeset 70 a9a4c5e6aa30
parent 66 ef8c9d7daf62
child 71 0a13030f795d
--- a/src/nexus.c	Mon Mar 16 22:06:39 2009 +0200
+++ b/src/nexus.c	Mon Mar 16 23:34:05 2009 +0200
@@ -261,33 +261,23 @@
     (void) sig;
     (void) what;
     
-    if (ctx->client && !ctx->client->quitting) {
-        log_info("Quitting...");
-
-        // quit it
-        irc_client_quit(ctx->client, "Goodbye, cruel world ;(");
+    log_info("Quitting...");
 
-    } else {
-        log_error("Aborting");
-        
-        // die
-        if (ctx->client) {
-            irc_client_destroy(ctx->client);
-            ctx->client = NULL;
-        }
+    // unload the modules
+    modules_unload(ctx->modules);
 
-        // exit
-        event_base_loopexit(ctx->ev_base, NULL);
-    }
+    // quit the irc client
+    irc_client_quit(ctx->client, "Goodbye, cruel world ;(");
+    
+    // remove the signal handlers (ourself)
+    signals_free(ctx->signals);
 }
 
 int main (int argc, char **argv) 
 {
-    struct signals *signals;
+    struct nexus _nexus, *nexus = &_nexus;
     struct error_info err;
 
-    struct nexus _nexus, *nexus = &_nexus;
-
     // zero nexus
     memset(nexus, 0, sizeof(*nexus));
 
@@ -296,13 +286,13 @@
         FATAL("event_base_new");
     
     // initialize signal handlers
-    if ((ERROR_CODE(&err) = signals_create(&signals, nexus->ev_base)))
+    if ((ERROR_CODE(&err) = signals_create(&nexus->signals, nexus->ev_base)))
         FATAL("signals_create");
 
     // add our signal handlers
     if (
-            (ERROR_CODE(&err) = signals_add(signals, SIGPIPE, &signals_ignore, signals))
-        ||  (ERROR_CODE(&err) = signals_add(signals, SIGINT, &on_sigint, nexus))
+            (ERROR_CODE(&err) = signals_add(nexus->signals, SIGPIPE, &signals_ignore, nexus->signals))
+        ||  (ERROR_CODE(&err) = signals_add(nexus->signals, SIGINT, &on_sigint, nexus))
     )
         FATAL_ERROR(&err, "signals_add");