[evolution] Bug #656267 - Checking for auth types doesn't work properly



commit b7cfbb7d677010cd7948d14563b8e88c7da0d9b3
Author: Milan Crha <mcrha redhat com>
Date:   Fri Aug 12 11:30:03 2011 +0200

    Bug #656267 - Checking for auth types doesn't work properly

 mail/em-account-editor.c |   42 ++++++++++++++++++++++++++++--------------
 mail/mail.error.xml      |    5 +++++
 2 files changed, 33 insertions(+), 14 deletions(-)
---
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c
index 5ae0b9e..3a391ea 100644
--- a/mail/em-account-editor.c
+++ b/mail/em-account-editor.c
@@ -1937,6 +1937,8 @@ emae_check_authtype_done (CamelService *camel_service,
                           GAsyncResult *result,
                           EMAccountEditorService *service)
 {
+	EMailBackend *backend;
+	EMailSession *session;
 	GtkWidget *editor;
 	GList *auth_types;
 	GError *error = NULL;
@@ -1944,13 +1946,15 @@ emae_check_authtype_done (CamelService *camel_service,
 	auth_types = camel_service_query_auth_types_finish (
 		camel_service, result, &error);
 
+	editor = E_CONFIG (service->emae->config)->window;
+
 	if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
 		g_warn_if_fail (auth_types == NULL);
 		g_error_free (error);
 
 	} else if (error != NULL) {
 		g_warn_if_fail (auth_types == NULL);
-		g_warning ("%s", error->message);
+		e_alert_run_dialog_for_args (GTK_WINDOW (service->check_dialog), "mail:checking-service-error", error->message, NULL);
 		g_error_free (error);
 
 	} else {
@@ -1962,11 +1966,15 @@ emae_check_authtype_done (CamelService *camel_service,
 	gtk_widget_destroy (service->check_dialog);
 	service->check_dialog = NULL;
 
-	editor = E_CONFIG (service->emae->config)->window;
-
 	if (editor != NULL)
 		gtk_widget_set_sensitive (editor, TRUE);
 
+	backend = em_account_editor_get_backend (service->emae);
+	session = e_mail_backend_get_session (backend);
+
+	/* drop the temporary CamelService */
+	camel_session_remove_service (CAMEL_SESSION (session), camel_service_get_uid (camel_service));
+
 	g_object_unref (service->emae);
 }
 
@@ -1989,6 +1997,8 @@ emae_check_authtype (GtkWidget *w,
 	GtkWidget *editor;
 	gpointer parent;
 	gchar *uid;
+	const gchar *url_string;
+	GError *error = NULL;
 
 	account = em_account_editor_get_modified_account (service->emae);
 	editor = E_CONFIG (service->emae->config)->window;
@@ -1996,16 +2006,25 @@ emae_check_authtype (GtkWidget *w,
 	backend = em_account_editor_get_backend (service->emae);
 	session = e_mail_backend_get_session (backend);
 
-	if (service->type == CAMEL_PROVIDER_TRANSPORT)
-		uid = g_strconcat (account->uid, "-transport", NULL);
-	else
-		uid = g_strdup (account->uid);
+	uid = g_strdup_printf ("emae-check-authtype-%p", service);
+	url_string = e_account_get_string (account, emae_service_info[service->type].account_uri_key);
 
-	camel_service = camel_session_get_service (
-		CAMEL_SESSION (session), uid);
+	/* to test on actual data, not on previously used */
+	camel_service = camel_session_add_service (CAMEL_SESSION (session), uid, url_string, service->type, &error);
 
 	g_free (uid);
 
+	if (editor != NULL)
+		parent = gtk_widget_get_toplevel (editor);
+	else
+		parent = gtk_widget_get_toplevel (w);
+
+	if (error) {
+		e_alert_run_dialog_for_args (parent, "mail:checking-service-error", error->message, NULL);
+		g_clear_error (&error);
+		return;
+	}
+
 	g_return_if_fail (CAMEL_IS_SERVICE (camel_service));
 
 	if (service->checking != NULL) {
@@ -2015,11 +2034,6 @@ emae_check_authtype (GtkWidget *w,
 
 	service->checking = g_cancellable_new ();
 
-	if (editor != NULL)
-		parent = gtk_widget_get_toplevel (editor);
-	else
-		parent = gtk_widget_get_toplevel (w);
-
 	service->check_dialog = e_alert_dialog_new_for_args (
 		parent, "mail:checking-service", NULL);
 
diff --git a/mail/mail.error.xml b/mail/mail.error.xml
index 0fa46c7..f32b4ce 100644
--- a/mail/mail.error.xml
+++ b/mail/mail.error.xml
@@ -404,6 +404,11 @@ An mbox account will be created to preserve the old mbox folders. You can delete
     <button stock="gtk-cancel" response="GTK_RESPONSE_CANCEL"/>
   </error>
 
+  <error id="checking-service-error" type="error">
+    <_primary>Failed to query server for a list of supported authentication mechanisms.</_primary>
+    <secondary xml:space="preserve">{0}</secondary>
+  </error>
+
   <error id="gw-accountsetup-error" type="error">
     <_primary>Unable to connect to the GroupWise server.</_primary>
     <_secondary xml:space="preserve">Please check your account settings and try again.</_secondary>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]