Changeset 2374

Show
Ignore:
Timestamp:
07/04/07 13:30:29
Author:
pvanhoof
Message:

Error handling in merge folders

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymail-camel/tny-session-camel.c

    r2371 r2374  
    514514        priv->is_connecting = TRUE; 
    515515 
    516         if (priv->current_accounts && 
    517                 priv->prev_constat != info->online && priv->account_store) 
    518  
    519         { 
     516        if (priv->current_accounts && priv->prev_constat != info->online && priv->account_store) { 
    520517                g_list_foreach (priv->current_accounts,  
    521518                        foreach_account_set_connectivity, info); 
  • trunk/libtinymail/tny-merge-folder.c

    r2175 r2374  
    4747{ 
    4848        TnyMergeFolderPriv *priv = TNY_MERGE_FOLDER_GET_PRIVATE (self); 
    49         TnyIterator *iter; 
    50  
    51         if (!priv->observers) 
     49        TnyList *copy = NULL; 
     50        TnyIterator *iter; 
     51 
     52        g_static_rec_mutex_lock (priv->lock); 
     53        if (!priv->observers) { 
     54                g_static_rec_mutex_unlock (priv->lock); 
    5255                return; 
    53  
    54         g_static_rec_mutex_lock (priv->lock); 
    55  
    56         iter = tny_list_create_iterator (priv->observers); 
     56        } 
     57        copy = tny_list_copy (priv->observers); 
     58        g_static_rec_mutex_unlock (priv->lock); 
     59 
     60        iter = tny_list_create_iterator (copy); 
    5761        while (!tny_iterator_is_done (iter)) 
    5862        { 
     
    6266                tny_iterator_next (iter); 
    6367        } 
    64         g_object_unref (G_OBJECT (iter)); 
    65  
    66         g_static_rec_mutex_unlock (priv->lock); 
     68 
     69        g_object_unref (iter); 
     70        g_object_unref (copy); 
    6771} 
    6872 
     
    102106        while (!tny_iterator_is_done (iter)) 
    103107        { 
     108                GError *new_err = NULL; 
    104109                TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 
    105                 tny_folder_sync (cur, expunge, err); 
    106  
    107                 /* TODO: Handle err ! */ 
    108  
     110 
     111                tny_folder_sync (cur, expunge, &new_err); 
    109112                g_object_unref (cur); 
     113 
     114                if (new_err != NULL) 
     115                { 
     116                        g_propagate_error (err, new_err); 
     117                        break; 
     118                } 
     119 
    110120                tny_iterator_next (iter); 
    111121        } 
     
    181191        while (!tny_iterator_is_done (iter) && !retval) 
    182192        { 
     193                GError *new_err = NULL; 
    183194                TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 
    184                 retval = tny_folder_find_msg (cur, url_string, err); 
    185  
    186                 /* TODO: Handle err */ 
    187  
     195                retval = tny_folder_find_msg (cur, url_string, &new_err); 
    188196                g_object_unref (cur); 
     197 
     198                if (new_err != NULL) 
     199                { 
     200                        g_propagate_error (err, new_err); 
     201                        break; 
     202                } 
     203 
    189204                tny_iterator_next (iter); 
    190205        } 
     
    312327        while (!tny_iterator_is_done (iter)) 
    313328        { 
     329                GError *new_err = NULL; 
    314330                TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 
    315                 tny_folder_get_headers (cur, headers, refresh, err); 
    316  
    317                 /* TODO: Handle err */ 
    318  
     331                tny_folder_get_headers (cur, headers, refresh, &new_err); 
    319332                g_object_unref (cur); 
     333 
     334                if (new_err != NULL) 
     335                { 
     336                        g_propagate_error (err, new_err); 
     337                        break; 
     338                } 
     339 
    320340                tny_iterator_next (iter); 
    321341        } 
     
    458478        while (!tny_iterator_is_done (iter)) 
    459479        { 
     480                GError *new_err = NULL; 
    460481                TnyFolder *cur = TNY_FOLDER (tny_iterator_get_current (iter)); 
    461                 tny_folder_refresh (cur, err); 
    462  
    463                 /* TODO: Handler err */ 
    464  
     482                tny_folder_refresh (cur, &new_err); 
    465483                g_object_unref (cur); 
     484 
     485                if (new_err != NULL) 
     486                { 
     487                        g_propagate_error (err, new_err); 
     488                        break; 
     489                } 
     490 
    466491                tny_iterator_next (iter); 
    467492        } 
     
    620645                TnyHeader *current = TNY_HEADER (tny_iterator_get_current (iter)); 
    621646                TnyFolder *folder = tny_header_get_folder (current); 
    622  
     647                GError *new_err = NULL; 
    623648                TnyList *nlist = tny_simple_list_new (); 
    624649                tny_list_prepend (nlist, G_OBJECT (current)); 
    625650 
    626                 tny_folder_transfer_msgs (folder, nlist, folder_dst, delete_originals, err); 
    627                 /* TODO: handle err*/ 
     651                tny_folder_transfer_msgs (folder, nlist, folder_dst, delete_originals, &new_err); 
    628652 
    629653                g_object_unref (nlist); 
    630654                g_object_unref (folder); 
    631655                g_object_unref (current); 
     656 
     657                if (new_err != NULL) 
     658                { 
     659                        g_propagate_error (err, new_err); 
     660                        break; 
     661                } 
     662 
    632663                tny_iterator_next (iter); 
    633664        } 
     
    761792                if (!nfol) 
    762793                { 
    763                         nfol = tny_folder_copy (folder, into, new_name, del, err); 
    764                         /* TODO: handle err */ 
     794                        GError *new_err = NULL; 
     795                        nfol = tny_folder_copy (folder, into, new_name, del, &new_err); 
     796 
     797                        if (new_err != NULL) 
     798                        { 
     799                                g_object_unref (folder); 
     800                                g_propagate_error (err, new_err); 
     801                                break; 
     802                        } 
     803 
    765804                } else { 
    766805                        TnyList *nlist = tny_simple_list_new (); 
    767  
    768                         tny_folder_get_headers (folder, nlist, FALSE, err); 
    769                         /* TODO: handle err */ 
    770                         tny_folder_transfer_msgs (folder, nlist, nfol, del, err); 
    771                         /* TODO: handle err*/ 
     806                        GError *new_err = NULL; 
     807 
     808                        tny_folder_get_headers (folder, nlist, FALSE, &new_err); 
     809                        if (new_err == NULL) 
     810                               tny_folder_transfer_msgs (folder, nlist, nfol, del, &new_err); 
    772811                        g_object_unref (nlist); 
     812 
     813                        if (new_err != NULL) 
     814                        { 
     815                                g_object_unref (folder); 
     816                                g_propagate_error (err, new_err); 
     817                                break; 
     818                        } 
     819 
    773820                } 
    774821