charon-systemd: Handle SIGHUP the same way charon does
authorTobias Brunner <tobias@strongswan.org>
Mon, 16 Jan 2017 16:20:10 +0000 (17:20 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 25 Jan 2017 13:58:05 +0000 (14:58 +0100)
That is, reload strongswan.conf, the loggers and the plugins.

src/charon-systemd/charon-systemd.c

index 5c7bbd7..fc93e21 100644 (file)
@@ -241,6 +241,7 @@ static int run()
        sigset_t set;
 
        sigemptyset(&set);
+       sigaddset(&set, SIGHUP);
        sigaddset(&set, SIGTERM);
        sigprocmask(SIG_BLOCK, &set, NULL);
 
@@ -262,6 +263,21 @@ static int run()
                }
                switch (sig)
                {
+                       case SIGHUP:
+                       {
+                               DBG1(DBG_DMN, "signal of type SIGHUP received. Reloading "
+                                        "configuration");
+                               if (lib->settings->load_files(lib->settings, lib->conf, FALSE))
+                               {
+                                       charon->load_loggers(charon, NULL, FALSE);
+                                       lib->plugins->reload(lib->plugins, NULL);
+                               }
+                               else
+                               {
+                                       DBG1(DBG_DMN, "reloading config failed, keeping old");
+                               }
+                               break;
+                       }
                        case SIGTERM:
                        {
                                DBG1(DBG_DMN, "SIGTERM received, shutting down");