summaryrefslogtreecommitdiff
path: root/src/addressbook/backends/carddav/e-book-backend-carddav.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/addressbook/backends/carddav/e-book-backend-carddav.c')
-rw-r--r--src/addressbook/backends/carddav/e-book-backend-carddav.c16
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) {