X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-send-queue.c;h=3fc3bdaae9b001e1fd7393cd3b46fdd29e147887;hp=fbeb4c7bd232a34b1bb50af3446998a8a8b57346;hb=d68cbedf16d65a87c290ecee24bb18fe9a1eb359;hpb=10135c887c0c30ddefa85716b06d3e5795a17651 diff --git a/src/modest-tny-send-queue.c b/src/modest-tny-send-queue.c index fbeb4c7..3fc3bda 100644 --- a/src/modest-tny-send-queue.c +++ b/src/modest-tny-send-queue.c @@ -210,7 +210,10 @@ _on_added_to_outbox (TnySendQueue *self, header = tny_msg_get_header (msg); msg_id = modest_tny_send_queue_get_msg_id (header); - g_return_if_fail(msg_id != NULL); + if (!msg_id) { + g_warning ("%s: No msg_id returned for header", __FUNCTION__); + goto end; + } /* Put newly added message in WAITING state */ existing = modest_tny_send_queue_lookup_info (MODEST_TNY_SEND_QUEUE(self), msg_id); @@ -226,7 +229,8 @@ _on_added_to_outbox (TnySendQueue *self, g_signal_emit (self, signals[STATUS_CHANGED_SIGNAL], 0, info->msg_id, info->status); - g_object_unref(G_OBJECT(header)); + end: + g_object_unref (G_OBJECT(header)); } static void @@ -502,16 +506,17 @@ gchar * modest_tny_send_queue_get_msg_id (TnyHeader *header) { gchar* msg_uid = NULL; - const gchar *subject; + gchar *subject; time_t date_received; g_return_val_if_fail (header && TNY_IS_HEADER(header), NULL); /* Get message uid */ - subject = tny_header_get_subject (header); + subject = tny_header_dup_subject (header); date_received = tny_header_get_date_received (header); msg_uid = g_strdup_printf ("%s %d", subject, (int) date_received); + g_free (subject); return msg_uid; } @@ -567,6 +572,8 @@ _on_msg_has_been_sent (TnySendQueue *self, tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN); + tny_folder_sync_async (priv->sentbox, FALSE, NULL, NULL, NULL); + /* Get status info */ item = modest_tny_send_queue_lookup_info (MODEST_TNY_SEND_QUEUE (self), msg_id); @@ -603,7 +610,7 @@ _on_msg_error_happened (TnySendQueue *self, generic send queue errors with this signal as well, and those notifications are not bound to any particular header or message */ - if (header) { + if (header && TNY_IS_HEADER (header)) { SendInfo *info = NULL; GList *item = NULL; gchar* msg_uid = NULL; @@ -611,7 +618,16 @@ _on_msg_error_happened (TnySendQueue *self, /* Get sending info (create new if it doesn not exist) */ msg_uid = modest_tny_send_queue_get_msg_id (header); item = modest_tny_send_queue_lookup_info (MODEST_TNY_SEND_QUEUE (self), - msg_uid); + msg_uid); + + /* TODO: this should not happen (but it does), so the + problem should be located in the way we generate + the message uids */ + if (!item) { + g_warning ("%s: could not find item with id '%s'", __FUNCTION__, msg_uid); + g_free(msg_uid); + return; + } info = item->data; @@ -686,7 +702,7 @@ modest_tny_all_send_queues_get_msg_status (TnyHeader *header) iter = tny_list_create_iterator (accounts); while (!tny_iterator_is_done (iter)) { account = TNY_TRANSPORT_ACCOUNT(tny_iterator_get_current (iter)); - send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account)); + 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);