diff options
Diffstat (limited to 'libemail-engine/e-mail-session-utils.c')
-rw-r--r-- | libemail-engine/e-mail-session-utils.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libemail-engine/e-mail-session-utils.c b/libemail-engine/e-mail-session-utils.c index 524b09d771..cd5dd50c52 100644 --- a/libemail-engine/e-mail-session-utils.c +++ b/libemail-engine/e-mail-session-utils.c @@ -542,6 +542,26 @@ mail_session_send_to_thread (GSimpleAsyncResult *simple, status = camel_service_get_connection_status (context->transport); if (status != CAMEL_SERVICE_CONNECTED) { + EMailSession *session; + ESourceRegistry *registry; + ESource *source; + + /* Make sure user will be asked for a password, in case he/she cancelled it */ + session = E_MAIL_SESSION (camel_service_ref_session (context->transport)); + registry = e_mail_session_get_registry (session); + source = e_source_registry_ref_source (registry, camel_service_get_uid (context->transport)); + g_object_unref (session); + + if (source) { + e_source_allow_auth_prompt_sync (source, cancellable, &error); + g_object_unref (source); + + if (error) { + g_simple_async_result_take_error (simple, error); + return; + } + } + did_connect = TRUE; camel_service_connect_sync ( |