dav/sync.c

changeset 318
7e0694423838
parent 316
9d0505d80044
child 331
9ca1e4706acc
equal deleted inserted replaced
317:7eea57f6d847 318:7e0694423838
1179 { 1179 {
1180 DavResource *remote = dav_get(sn, res->path, "D:getetag"); 1180 DavResource *remote = dav_get(sn, res->path, "D:getetag");
1181 int ret = 0; 1181 int ret = 0;
1182 if(remote) { 1182 if(remote) {
1183 char *etag = dav_get_property(remote, "D:getetag"); 1183 char *etag = dav_get_property(remote, "D:getetag");
1184 if(etag && res->etag) { 1184 if(!res->etag) {
1185 // the resource is on the server and the client has no etag
1186 ret = 1;
1187 } else if(etag) {
1185 sstr_t e = sstr(etag); 1188 sstr_t e = sstr(etag);
1186 if(sstrprefix(e, S("W/"))) { 1189 if(sstrprefix(e, S("W/"))) {
1187 e = sstrsubs(e, 2); 1190 e = sstrsubs(e, 2);
1188 } 1191 }
1189 if(strcmp(e.ptr, res->etag)) { 1192 if(strcmp(e.ptr, res->etag)) {
1190 ret = 1; 1193 ret = 1;
1191 } 1194 }
1195 } else {
1196 // something weird is happening, the server must support etags
1197 fprintf(stderr, "Warning: resource %s has no etag\n", remote->href);
1192 } 1198 }
1193 dav_resource_free(remote); 1199 dav_resource_free(remote);
1194 } 1200 }
1195 return ret; 1201 return ret;
1196 } 1202 }

mercurial