X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-send-queue.c;h=ba91145454ad24f80f232f3ba27d6d175e886bf1;hp=ae2d3d166cd64b37de4f87efac58b9a5d2e270b9;hb=42b51c4f9cdf3e8ee29649f9d97e5ba074d907e5;hpb=a1d576310d8fd6c92053672e0f7d8c69e416807d diff --git a/src/modest-tny-send-queue.c b/src/modest-tny-send-queue.c index ae2d3d1..ba91145 100644 --- a/src/modest-tny-send-queue.c +++ b/src/modest-tny-send-queue.c @@ -480,7 +480,21 @@ modest_tny_send_queue_new (TnyCamelTransportAccount *account) g_return_val_if_fail (TNY_IS_CAMEL_TRANSPORT_ACCOUNT(account), NULL); self = MODEST_TNY_SEND_QUEUE(g_object_new(MODEST_TYPE_TNY_SEND_QUEUE, NULL)); - + + /* Set outbox and sentbox */ + priv = MODEST_TNY_SEND_QUEUE_GET_PRIVATE (self); + priv->outbox = modest_tny_account_get_special_folder (TNY_ACCOUNT(account), + TNY_FOLDER_TYPE_OUTBOX); + priv->sentbox = modest_tny_account_get_special_folder (TNY_ACCOUNT(account), + TNY_FOLDER_TYPE_SENT); + + /* NOTE that this could happen if there was not enough disk + space when the account was created */ + if (!priv->outbox || !priv->sentbox) { + g_object_unref (self); + return NULL; + } + /* Connect signals to control when a msg is being or has been sent */ g_signal_connect (G_OBJECT(self), "msg-sending", G_CALLBACK(_on_msg_start_sending), @@ -495,12 +509,7 @@ modest_tny_send_queue_new (TnyCamelTransportAccount *account) G_CALLBACK (_on_queue_start), NULL); - /* Set outbox and sentbox */ - priv = MODEST_TNY_SEND_QUEUE_GET_PRIVATE (self); - priv->outbox = modest_tny_account_get_special_folder (TNY_ACCOUNT(account), - TNY_FOLDER_TYPE_OUTBOX); - priv->sentbox = modest_tny_account_get_special_folder (TNY_ACCOUNT(account), - TNY_FOLDER_TYPE_SENT); + priv->requested_send_receive = FALSE; headers = tny_simple_list_new (); @@ -689,12 +698,26 @@ _on_msg_error_happened (TnySendQueue *self, } else { if (err->code == TNY_SERVICE_ERROR_CONNECT) { TnyCamelTransportAccount* transport; + TnyTransportAccount *conn_specific; transport = tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self)); if (transport) { - gchar *message; - message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), - tny_account_get_hostname (TNY_ACCOUNT (transport))); + gchar *message; + ModestTnyAccountStore *acc_store; + const gchar *acc_name; + + acc_store = modest_runtime_get_account_store(); + acc_name = modest_tny_account_get_parent_modest_account_name_for_server_account (TNY_ACCOUNT (transport)); + conn_specific = (TnyTransportAccount *) + modest_tny_account_store_get_transport_account_for_open_connection (acc_store, acc_name); + if (conn_specific) { + message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), + tny_account_get_hostname (TNY_ACCOUNT (conn_specific))); + g_object_unref (conn_specific); + } else { + message = g_strdup_printf (_("emev_ib_ui_smtp_server_invalid"), + tny_account_get_hostname (TNY_ACCOUNT (transport))); + } modest_platform_run_alert_dialog (message, FALSE); g_free (message); g_object_unref (transport); @@ -769,11 +792,12 @@ modest_tny_all_send_queues_get_msg_status (TnyHeader *header) account = TNY_TRANSPORT_ACCOUNT(tny_iterator_get_current (iter)); send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account), TRUE); g_object_unref(account); - - queue_status = modest_tny_send_queue_get_msg_status (send_queue, msg_uid); - if (queue_status != MODEST_TNY_SEND_QUEUE_UNKNOWN) { - status = queue_status; - break; + if (TNY_IS_SEND_QUEUE (send_queue)) { + queue_status = modest_tny_send_queue_get_msg_status (send_queue, msg_uid); + if (queue_status != MODEST_TNY_SEND_QUEUE_UNKNOWN) { + status = queue_status; + break; + } } tny_iterator_next (iter); }