]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/lightdm.c
Don't quit on SIGUSR1, SIGUSR2 or SIGHUP
[sojka/lightdm.git] / src / lightdm.c
index 3246b6ab9da13e15f8ce0abbe3f9fe4a43232087..a7a1d0211547475ddb88e3d0232baa77770f67d4 100644 (file)
@@ -126,6 +126,7 @@ static void
 log_init (void)
 {
     gchar *log_dir, *path;
+    gboolean backup_logs;
 
     log_timer = g_timer_new ();
 
@@ -134,7 +135,8 @@ log_init (void)
     path = g_build_filename (log_dir, "lightdm.log", NULL);
     g_free (log_dir);
 
-    log_fd = log_file_open (path, LOG_MODE_APPEND);
+    backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+    log_fd = log_file_open (path, backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
     fcntl (log_fd, F_SETFD, FD_CLOEXEC);
     g_log_set_default_handler (log_cb, NULL);
 
@@ -194,9 +196,19 @@ set_seat_properties (Seat *seat, const gchar *seat_name)
 static void
 signal_cb (Process *process, int signum)
 {
-    g_debug ("Caught %s signal, shutting down", g_strsignal (signum));
-    display_manager_stop (display_manager);
-    // FIXME: Stop XDMCP server
+    switch (signum)
+    {
+    case SIGINT:
+    case SIGTERM:
+        g_debug ("Caught %s signal, shutting down", g_strsignal (signum));
+        display_manager_stop (display_manager);
+        // FIXME: Stop XDMCP server
+        break;
+    case SIGUSR1:
+    case SIGUSR2:
+    case SIGHUP:
+        break;
+    }
 }
 
 static void
@@ -905,7 +917,7 @@ bus_acquired_cb (GDBusConnection *connection,
             keys = g_key_file_new ();
             result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
             if (error)
-                g_debug ("Error getting key %s", error->message);
+                g_warning ("Unable to load keys from %s: %s", path, error->message);
             g_clear_error (&error);
 
             if (result)
@@ -913,7 +925,7 @@ bus_acquired_cb (GDBusConnection *connection,
                 if (g_key_file_has_key (keys, "keyring", key_name, NULL))
                     key = g_key_file_get_string (keys, "keyring", key_name, NULL);
                 else
-                    g_debug ("Key %s not defined", key_name);
+                    g_warning ("Key %s not defined", key_name);
             }
             g_free (path);
             g_key_file_free (keys);
@@ -922,9 +934,18 @@ bus_acquired_cb (GDBusConnection *connection,
             xdmcp_server_set_key (xdmcp_server, key);
         g_free (key_name);
         g_free (key);
-
-        g_debug ("Starting XDMCP server on UDP/IP port %d", xdmcp_server_get_port (xdmcp_server));
-        xdmcp_server_start (xdmcp_server);
+      
+        if (key_name && !key)
+        {
+            exit_code = EXIT_FAILURE;
+            display_manager_stop (display_manager);
+            return;
+        }
+        else
+        {
+            g_debug ("Starting XDMCP server on UDP/IP port %d", xdmcp_server_get_port (xdmcp_server));
+            xdmcp_server_start (xdmcp_server);
+        }
     }
 
     /* Start the VNC server */
@@ -1371,6 +1392,8 @@ main (int argc, char **argv)
         config_set_string (config_get_instance (), "LightDM", "greeter-user", GREETER_USER);
     if (!config_has_key (config_get_instance (), "LightDM", "lock-memory"))
         config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
+    if (!config_has_key (config_get_instance (), "LightDM", "backup-logs"))
+        config_set_boolean (config_get_instance (), "LightDM", "backup-logs", TRUE);
     if (!config_has_key (config_get_instance (), "Seat:*", "type"))
         config_set_string (config_get_instance (), "Seat:*", "type", "xlocal");
     if (!config_has_key (config_get_instance (), "Seat:*", "pam-service"))