--- gdm-2.30.7/daemon/main.c-orig	2012-06-18 04:30:50.384309398 -0500
+++ gdm-2.30.7/daemon/main.c	2012-06-18 04:31:19.538638950 -0500
@@ -553,9 +553,17 @@ signal_cb (int      signo,
 
         case SIGHUP:
                 g_debug ("Got HUP signal");
-                /* FIXME:
-                 * Reread config stuff like system config files, VPN service files, etc
+                /* Reread config stuff like system config files, VPN service
+                 * files, etc
                  */
+                gdm_settings_clear ();
+                settings = gdm_settings_new ();
+                if (settings != NULL) {
+                        if (! gdm_settings_direct_init (settings, GDMCONFDIR "/gdm.schemas", "/")) {
+                                g_warning ("Unable to initialize settings");
+                        }
+                }
+
                 ret = TRUE;
 
                 break;
--- gdm-2.30.7/common/gdm-settings-direct.c-orig	2012-06-18 05:24:53.241801179 -0500
+++ gdm-2.30.7/common/gdm-settings-direct.c	2012-06-18 05:25:37.992076943 -0500
@@ -232,7 +232,10 @@ gdm_settings_direct_init (GdmSettings *s
         g_return_val_if_fail (file != NULL, FALSE);
         g_return_val_if_fail (root != NULL, FALSE);
 
-        g_assert (schemas == NULL);
+        g_debug ("Settings Direct Init");
+        if (schemas != NULL)
+                g_hash_table_destroy (schemas);
+        schemas = NULL;
 
         if (! gdm_settings_parse_schemas (file, root, &list)) {
                 g_warning ("Unable to parse schemas");
--- gdm-2.30.7/common/gdm-settings.h-orig	2012-06-21 17:44:44.645119506 -0500
+++ gdm-2.30.7/common/gdm-settings.h	2012-06-21 17:45:12.553469184 -0500
@@ -74,6 +74,7 @@ gboolean            gdm_settings_set_val
                                                                  const char  *key,
                                                                  const char  *value,
                                                                  GError     **error);
+void                gdm_settings_clear                          (void);
 
 G_END_DECLS
 
--- gdm-2.30.7/common/gdm-settings.c-orig	2012-06-21 17:42:51.476737554 -0500
+++ gdm-2.30.7/common/gdm-settings.c	2012-06-21 17:47:14.907611169 -0500
@@ -260,3 +260,10 @@ gdm_settings_new (void)
 
         return GDM_SETTINGS (settings_object);
 }
+
+void
+gdm_settings_clear (void)
+{
+        g_object_unref (settings_object);
+        settings_object = NULL;
+}
