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);
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
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;
}
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);
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;
/* 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;
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);