Check for NULL in tny_header_get_message_id()
[modest] / src / modest-mail-operation.c
index 4bfa130..45a5455 100644 (file)
@@ -672,14 +672,23 @@ send_mail_msg_sent_handler (TnySendQueue *queue, TnyHeader *header, TnyMsg *msg,
                            guint nth, guint total, gpointer userdata)
 {
        SendMsgInfo *info = (SendMsgInfo *) userdata;
-
-       if (!strcmp (tny_msg_get_url_string (msg),
-                    tny_msg_get_url_string (info->msg))) {
+       TnyHeader *hdr1, *hdr2;
+       const char *msgid1, *msgid2;
+       hdr1 = tny_msg_get_header(msg);
+       hdr2 = tny_msg_get_header(info->msg);
+       msgid1 = tny_header_get_message_id(hdr1);
+       msgid2 = tny_header_get_message_id(hdr2);
+       if (msgid1 == NULL) msgid1 = "(null)";
+       if (msgid2 == NULL) msgid2 = "(null)";
+
+       if (!strcmp (msgid1, msgid2)) {
                ModestMailOperationPrivate *priv = MODEST_MAIL_OPERATION_GET_PRIVATE (info->mail_op);
                priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
 
                common_send_mail_operation_end (queue, msg, info);
        }
+       g_object_unref(G_OBJECT(hdr1));
+       g_object_unref(G_OBJECT(hdr2));
 }
 
 static void     
@@ -687,9 +696,18 @@ send_mail_error_happened_handler (TnySendQueue *queue, TnyHeader *header, TnyMsg
                                  GError *error, gpointer userdata)
 {
        SendMsgInfo *info = (SendMsgInfo *) userdata;
-
-       if (!strcmp (tny_msg_get_url_string (msg),
-                    tny_msg_get_url_string (info->msg))) {
+       TnyHeader *hdr1, *hdr2;
+       hdr1 = tny_msg_get_header(msg);
+       hdr2 = tny_msg_get_header(info->msg);
+       const char *msgid1, *msgid2;
+       hdr1 = tny_msg_get_header(msg);
+       hdr2 = tny_msg_get_header(info->msg);
+       msgid1 = tny_header_get_message_id(hdr1);
+       msgid2 = tny_header_get_message_id(hdr2);
+       if (msgid1 == NULL) msgid1 = "(null)";
+       if (msgid2 == NULL) msgid2 = "(null)";
+
+       if (!strcmp (msgid1, msgid2)) {
                ModestMailOperationPrivate *priv = MODEST_MAIL_OPERATION_GET_PRIVATE (info->mail_op);
                priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
                g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
@@ -698,6 +716,8 @@ send_mail_error_happened_handler (TnySendQueue *queue, TnyHeader *header, TnyMsg
 
                common_send_mail_operation_end (queue, msg, info);
        }
+       g_object_unref(G_OBJECT(hdr1));
+       g_object_unref(G_OBJECT(hdr2));
 }
 
 
@@ -1258,7 +1278,7 @@ inbox_refreshed_cb (TnyFolder *inbox,
        GPtrArray *new_headers_array = NULL;   
        gint max_size, retrieve_limit, i;
        ModestAccountMgr *mgr;
-       gchar *retrieve_type = NULL;
+       ModestAccountRetrieveType retrieve_type;
        TnyList *new_headers = NULL;
        gboolean headers_only;
        TnyTransportAccount *transport_account;
@@ -1314,8 +1334,7 @@ inbox_refreshed_cb (TnyFolder *inbox,
        
        /* Get per-account retrieval type */
        retrieve_type = modest_account_mgr_get_retrieve_type (mgr, info->account_name); 
-       headers_only = !g_ascii_strcasecmp (retrieve_type, MODEST_ACCOUNT_RETRIEVE_VALUE_HEADERS_ONLY);
-       g_free (retrieve_type);
+       headers_only = (retrieve_type == MODEST_ACCOUNT_RETRIEVE_HEADERS_ONLY);
 
        /* Order by date */
        g_ptr_array_sort (new_headers_array, (GCompareFunc) compare_headers_by_date);