Changeset 3772

Show
Ignore:
Timestamp:
09/26/08 11:07:12
Author:
jdapena
Message:

Backported from trunk:
* Adding extra checks on writing to summary on disk, to make sure we

detect if summary save_rewrite process was complete, and then, we can
load again the summary or consider this corrupt.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • releases/modest/diablo-pe2/libtinymail-camel/camel-lite/camel/camel-folder-summary.c

    r3677 r3772  
    19511951                                        else return -1; 
    19521952                                } 
    1953                         } 
     1953                        } else 
     1954                                return -1; 
    19541955                } 
    19551956        } 
     
    20862087 
    20872088        /* we always write out the current version */ 
    2088         camel_file_util_encode_fixed_int32(out, CAMEL_FOLDER_SUMMARY_VERSION)
    2089         camel_file_util_encode_fixed_int32(out, s->flags)
    2090         camel_file_util_encode_fixed_int32(out, s->nextuid)
    2091         camel_file_util_encode_time_t(out, s->time)
     2089        if (camel_file_util_encode_fixed_int32(out, CAMEL_FOLDER_SUMMARY_VERSION) == -1) return -1
     2090        if (camel_file_util_encode_fixed_int32(out, s->flags) == -1) return -1
     2091        if (camel_file_util_encode_fixed_int32(out, s->nextuid) == -1) return -1
     2092        if (camel_file_util_encode_time_t(out, s->time) == -1) return -1
    20922093 
    20932094        count = camel_folder_summary_count(s); 
     
    21082109        } 
    21092110 
    2110         camel_file_util_encode_fixed_int32(out, count)
    2111         camel_file_util_encode_fixed_int32(out, unread)
    2112         camel_file_util_encode_fixed_int32(out, deleted)
     2111        if (camel_file_util_encode_fixed_int32(out, count) == -1) return -1
     2112        if (camel_file_util_encode_fixed_int32(out, unread) == -1) return -1
     2113        if (camel_file_util_encode_fixed_int32(out, deleted) == -1) return -1
    21132114 
    21142115        return camel_file_util_encode_fixed_int32(out, junk); 
     
    25512552        io(printf("Saving message info\n")); 
    25522553 
    2553         camel_file_util_encode_string(out, camel_message_info_uid(mi))
    2554  
    2555         camel_file_util_encode_uint32(out, mi->size)
    2556         camel_file_util_encode_uint32(out, mi->flags)
    2557  
    2558         camel_file_util_encode_time_t(out, mi->date_sent)
    2559         camel_file_util_encode_time_t(out, mi->date_received)
    2560         camel_file_util_encode_string(out, camel_message_info_subject(mi))
    2561         camel_file_util_encode_string(out, camel_message_info_from(mi))
    2562         camel_file_util_encode_string(out, camel_message_info_to(mi))
    2563         camel_file_util_encode_string(out, camel_message_info_cc(mi))
     2554        if (camel_file_util_encode_string(out, camel_message_info_uid(mi))== -1) return -1
     2555 
     2556        if (camel_file_util_encode_uint32(out, mi->size)== -1) return -1
     2557        if (camel_file_util_encode_uint32(out, mi->flags)== -1) return -1
     2558 
     2559        if (camel_file_util_encode_time_t(out, mi->date_sent)== -1) return -1
     2560        if (camel_file_util_encode_time_t(out, mi->date_received)== -1) return -1
     2561        if (camel_file_util_encode_string(out, camel_message_info_subject(mi))== -1) return -1
     2562        if (camel_file_util_encode_string(out, camel_message_info_from(mi))== -1) return -1
     2563        if (camel_file_util_encode_string(out, camel_message_info_to(mi))== -1) return -1
     2564        if (camel_file_util_encode_string(out, camel_message_info_cc(mi))== -1) return -1
    25642565 
    25652566#ifdef NON_TINYMAIL_FEATURES 
    2566         camel_file_util_encode_string(out, camel_message_info_mlist(mi))
     2567        if (camel_file_util_encode_string(out, camel_message_info_mlist(mi))== -1) return -1
    25672568#else 
    2568         camel_file_util_encode_string(out, "")
     2569        if (camel_file_util_encode_string(out, "")== -1) return -1
    25692570#endif 
    25702571 
    2571         camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.hi)
    2572         camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.lo)
     2572        if (camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.hi)== -1) return -1
     2573        if (camel_file_util_encode_fixed_int32(out, mi->message_id.id.part.lo)== -1) return -1
    25732574 
    25742575#ifdef NON_TINYMAIL_FEATURES 
    25752576        if (mi->references) { 
    2576                 camel_file_util_encode_uint32(out, mi->references->size)
     2577                if (camel_file_util_encode_uint32(out, mi->references->size)== -1) return -1
    25772578                for (i=0;i<mi->references->size;i++) { 
    2578                         camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.hi)
    2579                         camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.lo)
     2579                        if (camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.hi)== -1) return -1
     2580                        if (camel_file_util_encode_fixed_int32(out, mi->references->references[i].id.part.lo)== -1) return -1
    25802581                } 
    25812582        } else { 
    25822583#endif 
    2583                 camel_file_util_encode_uint32(out, 0)
     2584                if (camel_file_util_encode_uint32(out, 0)== -1) return -1
    25842585 
    25852586#ifdef NON_TINYMAIL_FEATURES 
     
    25902591#endif 
    25912592 
    2592         camel_file_util_encode_uint32(out, count)
     2593        if (camel_file_util_encode_uint32(out, count)== -1) return -1
    25932594 
    25942595#ifdef NON_TINYMAIL_FEATURES 
    25952596        flag = mi->user_flags; 
    25962597        while (flag) { 
    2597                 camel_file_util_encode_string(out, flag->name)
     2598                if (camel_file_util_encode_string(out, flag->name)== -1) return -1
    25982599                flag = flag->next; 
    25992600        } 
     
    26062607#endif 
    26072608 
    2608         camel_file_util_encode_uint32(out, count)
     2609        if (camel_file_util_encode_uint32(out, count)== -1) return -1
    26092610 
    26102611#ifdef NON_TINYMAIL_FEATURES 
    26112612        tag = mi->user_tags; 
    26122613        while (tag) { 
    2613                 camel_file_util_encode_string(out, tag->name)
    2614                 camel_file_util_encode_string(out, tag->value)
     2614                if (camel_file_util_encode_string(out, tag->name)== -1) return -1
     2615                if (camel_file_util_encode_string(out, tag->value)== -1) return -1
    26152616                tag = tag->next; 
    26162617        } 
     
    27692770 
    27702771        if (ct) { 
    2771                 camel_folder_summary_encode_token(out, ct->type)
    2772                 camel_folder_summary_encode_token(out, ct->subtype)
    2773                 camel_file_util_encode_uint32(out, my_list_size((struct _node **)&ct->params))
     2772                if (camel_folder_summary_encode_token(out, ct->type) == -1) return -1
     2773                if (camel_folder_summary_encode_token(out, ct->subtype)) return -1
     2774                if (camel_file_util_encode_uint32(out, my_list_size((struct _node **)&ct->params))) return -1
    27742775                hp = ct->params; 
    27752776                while (hp) { 
    2776                         camel_folder_summary_encode_token(out, hp->name)
    2777                         camel_folder_summary_encode_token(out, hp->value)
     2777                        if (camel_folder_summary_encode_token(out, hp->name)) return -1
     2778                        if (camel_folder_summary_encode_token(out, hp->value)) return -1
    27782779                        hp = hp->next; 
    27792780                } 
    27802781        } else { 
    2781                 camel_folder_summary_encode_token(out, NULL)
    2782                 camel_folder_summary_encode_token(out, NULL)
    2783                 camel_file_util_encode_uint32(out, 0)
     2782                if (camel_folder_summary_encode_token(out, NULL)) return -1
     2783                if (camel_folder_summary_encode_token(out, NULL)) return -1
     2784                if (camel_file_util_encode_uint32(out, 0)) return -1
    27842785        } 
    27852786 
    27862787        if (ci) { 
    2787                 camel_folder_summary_encode_token(out, ci->id)
    2788                 camel_folder_summary_encode_token(out, ci->description)
    2789                 camel_folder_summary_encode_token(out, ci->encoding)
     2788                if (camel_folder_summary_encode_token(out, ci->id)) return -1
     2789                if (camel_folder_summary_encode_token(out, ci->description)) return -1
     2790                if (camel_folder_summary_encode_token(out, ci->encoding)) return -1
    27902791                retval = camel_file_util_encode_uint32(out, ci->size); 
    27912792        } else { 
    2792                 camel_folder_summary_encode_token(out, "invalid")
    2793                 camel_folder_summary_encode_token(out, "invalid")
    2794                 camel_folder_summary_encode_token(out, "text/plain")
     2793                if (camel_folder_summary_encode_token(out, "invalid")) return -1
     2794                if (camel_folder_summary_encode_token(out, "invalid")) return -1
     2795                if (camel_folder_summary_encode_token(out, "text/plain")) return -1
    27952796                retval = camel_file_util_encode_uint32(out, 0); 
    27962797        } 
  • releases/modest/diablo-pe2/libtinymail-camel/camel-lite/camel/camel-store-summary.c

    r3314 r3772  
    853853 
    854854        /* always write latest version */ 
    855         camel_file_util_encode_fixed_int32(out, CAMEL_STORE_SUMMARY_VERSION)
    856         camel_file_util_encode_fixed_int32(out, s->flags)
    857         camel_file_util_encode_time_t(out, s->time)
     855        if (camel_file_util_encode_fixed_int32(out, CAMEL_STORE_SUMMARY_VERSION)==-1) return -1
     856        if (camel_file_util_encode_fixed_int32(out, s->flags)==-1) return -1
     857        if (camel_file_util_encode_time_t(out, s->time)==-1) return -1
    858858        return camel_file_util_encode_fixed_int32(out, camel_store_summary_count(s)); 
    859859} 
  • releases/modest/diablo-pe2/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-summary.c

    r2950 r3772  
    203203                return -1; 
    204204 
    205         camel_file_util_encode_fixed_int32(out, CAMEL_IMAP_SUMMARY_VERSION)
     205        if (camel_file_util_encode_fixed_int32(out, CAMEL_IMAP_SUMMARY_VERSION) == -1) return -1
    206206 
    207207        return camel_file_util_encode_fixed_int32(out, ims->validity); 
     
    283283{ 
    284284        if (info && info->type) { 
    285                 camel_file_util_encode_uint32 (out, 1)
     285                if (camel_file_util_encode_uint32 (out, 1)== -1) return -1
    286286                return camel_imap_summary_parent->content_info_save (s, out, info); 
    287287        } else 
  • releases/modest/diablo-pe2/libtinymail-camel/camel-lite/camel/providers/local/camel-mbox-summary.c

    r3677 r3772  
    275275                return -1; 
    276276 
    277         camel_file_util_encode_fixed_int32(out, CAMEL_MBOX_SUMMARY_VERSION)
     277        if (camel_file_util_encode_fixed_int32(out, CAMEL_MBOX_SUMMARY_VERSION) == -1) return -1
    278278 
    279279        return camel_file_util_encode_size_t(out, mbs->folder_size);