Index: gdm-2.24.0/daemon/gdm-session-direct.c
===================================================================
--- gdm-2.24.0.orig/daemon/gdm-session-direct.c
+++ gdm-2.24.0/daemon/gdm-session-direct.c
@@ -763,14 +763,37 @@ get_fallback_session_name (void)
         return name;
 }
 
+static char *
+_get_default_session_name_from_sysconf (void)
+{
+        gchar *session_name;
+
+        session_name = ensure_non_empty (gdm_sysconfig_load_value ("/etc/sysconfig/windowmanager", "DEFAULT_WM"));
+
+        if (session_name) {
+                if (get_session_command_for_name (session_name, NULL)) {
+                        return session_name;
+                } else 
+                        g_free (session_name);
+        }
+
+        return NULL;
+}
+
 static const char *
 get_default_session_name (GdmSessionDirect *session)
 {
+        gchar *session_name;
+
         if (session->priv->saved_session != NULL) {
                 return session->priv->saved_session;
         }
 
-        return get_fallback_session_name ();
+        session_name = _get_default_session_name_from_sysconf ();
+        if (session_name)
+                return session_name;
+        else 
+                return get_fallback_session_name ();
 }
 
 static void
Index: gdm-2.24.0/daemon/main.c
===================================================================
--- gdm-2.24.0.orig/daemon/main.c
+++ gdm-2.24.0/daemon/main.c
@@ -501,11 +501,9 @@ load_settings (GdmManager *manager)
         gboolean            local_enabled;
         gboolean            xdmcp_enabled;
 
-        xdmcp_enabled = FALSE;
         gdm_settings_direct_get_boolean (GDM_KEY_XDMCP_ENABLE, &xdmcp_enabled);
         gdm_manager_set_xdmcp_enabled (manager, xdmcp_enabled);
 
-        local_enabled = TRUE;
         gdm_settings_direct_get_boolean (GDM_KEY_LOCAL_XSERVER_ENABLE, &local_enabled);
         gdm_manager_set_local_enabled (manager, local_enabled);
 }
@@ -518,7 +516,10 @@ on_settings_value_changed (GdmSettings *
                 GdmManager *manager)
 {
 	if (key == NULL) {
-		load_settings (manager);
+                gboolean            xdmcp_enabled;
+
+                gdm_settings_direct_get_boolean (GDM_KEY_XDMCP_ENABLE, &xdmcp_enabled);
+                gdm_manager_set_xdmcp_enabled (manager, xdmcp_enabled);
 	}
 }
 
Index: gdm-2.24.0/gui/simple-greeter/gdm-greeter-login-window.c
===================================================================
--- gdm-2.24.0.orig/gui/simple-greeter/gdm-greeter-login-window.c
+++ gdm-2.24.0/gui/simple-greeter/gdm-greeter-login-window.c
@@ -106,7 +106,8 @@ enum {
 
 enum {
         LOGIN_BUTTON_HIDDEN = 0,
-        LOGIN_BUTTON_ANSWER_QUERY,
+        LOGIN_BUTTON_ANSWER_INFO_QUERY,
+        LOGIN_BUTTON_ANSWER_SECRET_INFO_QUERY,
         LOGIN_BUTTON_TIMED_LOGIN
 };
 
@@ -438,7 +439,29 @@ get_show_restart_buttons (GdmGreeterLogi
 }
 
 static void
-on_login_button_clicked_answer_query (GtkButton             *button,
+on_login_button_clicked_answer_info_query (GtkButton             *button,
+                                      GdmGreeterLoginWindow *login_window)
+{
+        GtkWidget  *entry;
+        const char *text;
+
+
+        entry = glade_xml_get_widget (login_window->priv->xml, "auth-prompt-entry");
+        text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+        if (text && *text) {
+                set_busy (login_window);
+                set_sensitive (login_window, FALSE);
+                _gdm_greeter_login_window_set_interactive (login_window, TRUE);
+                g_signal_emit (login_window, signals[QUERY_ANSWER], 0, text);
+        } else {
+                text = _("Please specify the user name.\n"); 
+                gdm_greeter_login_window_problem (login_window, text);
+        }
+}
+
+static void
+on_login_button_clicked_answer_secret_info_query (GtkButton             *button,
                                       GdmGreeterLoginWindow *login_window)
 {
         GtkWidget  *entry;
@@ -483,8 +506,12 @@ set_log_in_button_mode (GdmGreeterLoginW
         case LOGIN_BUTTON_HIDDEN:
                 gtk_widget_hide (button);
                 break;
-        case LOGIN_BUTTON_ANSWER_QUERY:
-                login_window->priv->login_button_handler_id = g_signal_connect (button, "clicked", G_CALLBACK (on_login_button_clicked_answer_query), login_window);
+        case LOGIN_BUTTON_ANSWER_INFO_QUERY:
+                login_window->priv->login_button_handler_id = g_signal_connect (button, "clicked", G_CALLBACK (on_login_button_clicked_answer_info_query), login_window);
+                gtk_widget_show (button);
+                break;
+        case LOGIN_BUTTON_ANSWER_SECRET_INFO_QUERY:
+                login_window->priv->login_button_handler_id = g_signal_connect (button, "clicked", G_CALLBACK (on_login_button_clicked_answer_secret_info_query), login_window);
                 gtk_widget_show (button);
                 break;
         case LOGIN_BUTTON_TIMED_LOGIN:
@@ -923,7 +950,6 @@ gdm_greeter_login_window_problem (GdmGre
         gtk_dialog_run (GTK_DIALOG (dialog));
         gtk_widget_destroy (dialog);
 
-        set_message (GDM_GREETER_LOGIN_WINDOW (login_window), text);
         gdk_window_beep (GTK_WIDGET (login_window)->window);
 
         _gdm_greeter_login_window_set_interactive (login_window, TRUE);
@@ -1013,7 +1039,7 @@ gdm_greeter_login_window_info_query (Gdm
         entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry");
         delete_entry_text (entry);
         gtk_entry_set_visibility (GTK_ENTRY (entry), TRUE);
-        set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_QUERY);
+        set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_INFO_QUERY);
 
         label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label");
         gtk_label_set_text (GTK_LABEL (label), text);
@@ -1063,7 +1089,7 @@ gdm_greeter_login_window_secret_info_que
         entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry");
         delete_entry_text (entry);
         gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE);
-        set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_QUERY);
+        set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_SECRET_INFO_QUERY);
 
         label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label");
         gtk_label_set_text (GTK_LABEL (label), text);
