Changeset 3679

Show
Ignore:
Timestamp:
05/21/08 14:28:37
Author:
pvanhoof
Message:

2008-05-21 Philip Van Hoof <pvanhoof@gnome.org>

        • Help piece of shit IMAP servers that don't do SEARCH correctly, like

AOL's IMAP server May 2008, by asking for the same thing using UID
FETCH.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r3678 r3679  
     12008-05-21  Philip Van Hoof <pvanhoof@gnome.org> 
     2 
     3        * Help piece of shit IMAP servers that don't do SEARCH correctly, like 
     4        AOL's IMAP server May 2008, by asking for the same thing using UID 
     5        FETCH. 
     6 
    172008-05-21  Philip Van Hoof <pvanhoof@gnome.org> 
    28 
  • trunk/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-folder.c

    r3675 r3679  
    33163316        /* Figure out whether we need more */ 
    33173317        more = (cnt < (exists - seq)); 
     3318 
     3319        if ((cnt < nextn) && more) 
     3320        { 
     3321                int i; 
     3322 
     3323                g_ptr_array_foreach (needheaders, (GFunc)g_free, NULL); 
     3324                g_ptr_array_free (needheaders, TRUE); 
     3325                needheaders = g_ptr_array_new (); 
     3326 
     3327                /* Old less efficient style */ 
     3328                if (!camel_imap_command_start (store, folder, ex, 
     3329                        "UID FETCH %d:%d (UID)", seq + 1, MAX (1, MIN (seq + 1 + nextn, exists))))  
     3330                { 
     3331                        if (camel_operation_cancel_check (NULL)) 
     3332                                imap_folder->cancel_occurred = TRUE; 
     3333                        else 
     3334                                g_warning ("IMAP error getting UIDs (1,1,1)"); 
     3335                        camel_folder_summary_kill_hash (folder->summary); 
     3336                        camel_operation_end (NULL); 
     3337                        store->dontdistridlehack = FALSE; 
     3338                        return; 
     3339                } 
     3340 
     3341                tcnt = cnt = imap_get_uids (folder, store, ex, needheaders, (exists - seq) - tcnt); 
     3342 
     3343                if (cnt == 0 && camel_exception_get_id (ex) == CAMEL_EXCEPTION_USER_CANCEL) 
     3344                { 
     3345                        if (camel_operation_cancel_check (NULL)) 
     3346                                imap_folder->cancel_occurred = TRUE; 
     3347                        else 
     3348                                g_warning ("IMAP error getting UIDs (1,2,1)"); 
     3349 
     3350                        g_ptr_array_foreach (needheaders, (GFunc)g_free, NULL); 
     3351                        g_ptr_array_free (needheaders, TRUE); 
     3352                        camel_operation_end (NULL); 
     3353                        more = FALSE; 
     3354                        camel_folder_summary_kill_hash (folder->summary); 
     3355                        store->dontdistridlehack = FALSE; 
     3356                        return; 
     3357                } 
     3358                camel_operation_end (NULL); 
     3359                more = FALSE; 
     3360                did_hack = TRUE; 
     3361        } 
     3362 
     3363        more = (cnt < (exists - seq)); 
     3364 
    33183365        /* If we received less than what we asked for, yet need more */ 
    33193366        if ((cnt < nextn) && more) 
     
    33303377                                return; 
    33313378                        } 
     3379 
     3380                camel_folder_summary_dispose_all (folder->summary); 
     3381 
    33323382                cnt = imap_get_uids (folder, store, ex, needheaders, (exists - seq) - cnt); 
    33333383