diff options
Diffstat (limited to 'src/calendar/backends/caldav/e-cal-backend-caldav.c')
-rw-r--r-- | src/calendar/backends/caldav/e-cal-backend-caldav.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/calendar/backends/caldav/e-cal-backend-caldav.c b/src/calendar/backends/caldav/e-cal-backend-caldav.c index 5f2c9bbad..7fc2e8e5e 100644 --- a/src/calendar/backends/caldav/e-cal-backend-caldav.c +++ b/src/calendar/backends/caldav/e-cal-backend-caldav.c @@ -1524,7 +1524,13 @@ ecb_caldav_save_component_sync (ECalMetaBackend *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) { @@ -1613,7 +1619,13 @@ ecb_caldav_remove_component_sync (ECalMetaBackend *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) { |