dav/sync.c

changeset 318
7e0694423838
parent 316
9d0505d80044
child 331
9ca1e4706acc
--- a/dav/sync.c	Sun Sep 24 14:31:42 2017 +0200
+++ b/dav/sync.c	Sun Oct 01 17:37:59 2017 +0200
@@ -1181,7 +1181,10 @@
     int ret = 0;
     if(remote) {
         char *etag = dav_get_property(remote, "D:getetag");
-        if(etag && res->etag) {
+        if(!res->etag) {
+            // the resource is on the server and the client has no etag
+            ret = 1;
+        } else if(etag) {
             sstr_t e = sstr(etag);
             if(sstrprefix(e, S("W/"))) {
                 e = sstrsubs(e, 2);
@@ -1189,6 +1192,9 @@
             if(strcmp(e.ptr, res->etag)) {
                 ret = 1;
             }
+        } else {
+            // something weird is happening, the server must support etags
+            fprintf(stderr, "Warning: resource %s has no etag\n", remote->href);
         }
         dav_resource_free(remote);
     }

mercurial