diff options
Diffstat (limited to 'src/addressbook/backends/carddav/e-book-backend-carddav.c')
-rw-r--r-- | src/addressbook/backends/carddav/e-book-backend-carddav.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/addressbook/backends/carddav/e-book-backend-carddav.c b/src/addressbook/backends/carddav/e-book-backend-carddav.c index 0f587eaef..17211b148 100644 --- a/src/addressbook/backends/carddav/e-book-backend-carddav.c +++ b/src/addressbook/backends/carddav/e-book-backend-carddav.c @@ -1285,7 +1285,13 @@ ebb_carddav_save_contact_sync (EBookMetaBackend *meta_backend, if (overwrite_existing && g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_PRECONDITION_FAILED)) { g_clear_error (&local_error); - local_error = EC_ERROR (E_CLIENT_ERROR_OUT_OF_SYNC); + + /* Pretend success when using the serer version on conflict, + the component will be updated during the refresh */ + if (conflict_resolution == E_CONFLICT_RESOLUTION_KEEP_SERVER) + success = TRUE; + else + local_error = EC_ERROR (E_CLIENT_ERROR_OUT_OF_SYNC); } if (local_error) { @@ -1374,7 +1380,13 @@ ebb_carddav_remove_contact_sync (EBookMetaBackend *meta_backend, success = TRUE; } else if (g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_PRECONDITION_FAILED)) { g_clear_error (&local_error); - local_error = EC_ERROR (E_CLIENT_ERROR_OUT_OF_SYNC); + + /* Pretend success when using the serer version on conflict, + the component will be updated during the refresh */ + if (conflict_resolution == E_CONFLICT_RESOLUTION_KEEP_SERVER) + success = TRUE; + else + local_error = EC_ERROR (E_CLIENT_ERROR_OUT_OF_SYNC); } if (local_error) { |