From: Sergio Villar Senin Date: Tue, 8 Sep 2009 11:28:56 +0000 (+0200) Subject: Fixes NB#131351, crash when exiting modest if there are new connection attempts X-Git-Tag: 3.0.17-rc51~1 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=65672fc46aa168a161d33f78325245e1ea4f2611 Fixes NB#131351, crash when exiting modest if there are new connection attempts --- diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index 8f72052..f2c597c 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -2155,8 +2155,6 @@ account_shutdown_callback (TnyCamelAccount *account, gboolean canceled, GError * op_data->callback (op_data->account_store, op_data->userdata); g_object_unref (op_data->account_store); g_free (op_data); - } else { - g_object_unref (op_data->account_store); } } @@ -2166,19 +2164,15 @@ account_shutdown (TnyAccount *account, ShutdownOpData *op_data) g_return_if_fail (account && TNY_IS_ACCOUNT(account)); if (TNY_IS_STORE_ACCOUNT (account) && - !modest_tny_folder_store_is_remote (TNY_FOLDER_STORE (account))) - goto frees; - - /* Disconnect account */ - if (tny_account_get_connection_status (account) == TNY_CONNECTION_STATUS_CONNECTED) { - tny_camel_account_set_online (TNY_CAMEL_ACCOUNT(account), FALSE, - account_shutdown_callback, op_data); + !modest_tny_folder_store_is_remote (TNY_FOLDER_STORE (account))) { + op_data->pending--; return; } - frees: - op_data->pending--; - g_object_unref (op_data->account_store); + /* Disconnect account */ + tny_camel_account_set_online (TNY_CAMEL_ACCOUNT(account), FALSE, + account_shutdown_callback, op_data); + } @@ -2187,7 +2181,7 @@ modest_tny_account_store_shutdown (ModestTnyAccountStore *self, ModestTnyAccountStoreShutdownCallback callback, gpointer userdata) { - gint i, num_accounts; + gint num_accounts; ShutdownOpData *op_data; ModestTnyAccountStorePrivate *priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self); @@ -2198,15 +2192,16 @@ modest_tny_account_store_shutdown (ModestTnyAccountStore *self, if (priv->transport_accounts) num_accounts += tny_list_get_length (priv->transport_accounts); - for (i = 0 ; i < num_accounts ; i++) - g_object_ref (self); - /* Create the helper object */ op_data = g_new0 (ShutdownOpData, 1); op_data->callback = callback; op_data->userdata = userdata; op_data->pending = num_accounts; - op_data->account_store = self; + op_data->account_store = g_object_ref (self); + + /* Force the TnyDevice to be offline. This way new + undesired connections won't be initiated */ + tny_device_force_offline (priv->device); /* Destroy all accounts. Disconnect all accounts before they are destroyed */ if (priv->store_accounts) { @@ -2220,6 +2215,7 @@ modest_tny_account_store_shutdown (ModestTnyAccountStore *self, if (op_data->pending == 0) { if (op_data->callback) op_data->callback (op_data->account_store, op_data->userdata); + g_object_unref (op_data->account_store); g_free (op_data); } }