[evolution-data-server] Correct runtime warning from camel_network_service_can_reach()



commit aef04a35d74f4f704fd6b41b983eba728a9028fd
Author: Milan Crha <mcrha redhat com>
Date:   Tue Oct 15 11:46:09 2019 +0200

    Correct runtime warning from camel_network_service_can_reach()
    
    A runtime warning about 'session' being NULL could be shown when the service
    didn't have the session available anymore. This could happen for example
    when checking authentication types, which uses its own temporary CamelSession.
    Rather than claiming a runtime warning and not finishing the asynchronous
    call at all handle this situation gracefully.

 src/camel/camel-network-service.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
---
diff --git a/src/camel/camel-network-service.c b/src/camel/camel-network-service.c
index f5eff9040..383045021 100644
--- a/src/camel/camel-network-service.c
+++ b/src/camel/camel-network-service.c
@@ -1113,23 +1113,28 @@ camel_network_service_can_reach (CamelNetworkService *service,
                                  gpointer user_data)
 {
        CamelSession *session;
-       gchar *description;
        GTask *task;
 
        g_return_if_fail (CAMEL_IS_NETWORK_SERVICE (service));
 
        session = camel_service_ref_session (CAMEL_SERVICE (service));
-       g_return_if_fail (session != NULL);
 
        task = g_task_new (service, cancellable, callback, user_data);
        g_task_set_source_tag (task, camel_network_service_can_reach);
 
-       description = g_strdup_printf (_("Checking reachability of account ā€œ%sā€"), 
camel_service_get_display_name (CAMEL_SERVICE (service)));
+       if (session) {
+               gchar *description;
 
-       camel_session_submit_job (session, description, network_service_can_reach_thread, task, 
g_object_unref);
+               description = g_strdup_printf (_("Checking reachability of account ā€œ%sā€"), 
camel_service_get_display_name (CAMEL_SERVICE (service)));
 
-       g_object_unref (session);
-       g_free (description);
+               camel_session_submit_job (session, description, network_service_can_reach_thread, task, 
g_object_unref);
+
+               g_object_unref (session);
+               g_free (description);
+       } else {
+               g_task_return_boolean (task, FALSE);
+               g_object_unref (task);
+       }
 }
 
 /**


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