Fix too many PROPFIND when starting a sync

csync would not update the etag (md5) for directoru in the database if
the etag has changed, but none of the files within that directory
actually changed
Esse commit está contido em:
Olivier Goffart
2013-04-17 16:25:52 +02:00
commit de Klaas Freitag
commit b49aaaabfc
3 arquivos alterados com 5 adições e 2 exclusões
+1
Ver Arquivo
@@ -179,6 +179,7 @@ struct csync_file_stat_s {
int nlink; /* u32 */
int type; /* u32 */
int child_modified;/*bool*/
int should_update_md5; /*bool */
char *destpath; /* for renames */
const char *md5;
+3 -1
Ver Arquivo
@@ -542,8 +542,10 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn,
}
if (ctx->current_fs && !ctx->current_fs->child_modified
&& ctx->current_fs->instruction == CSYNC_INSTRUCTION_EVAL)
&& ctx->current_fs->instruction == CSYNC_INSTRUCTION_EVAL) {
ctx->current_fs->instruction = CSYNC_INSTRUCTION_NONE;
ctx->current_fs->should_update_md5 = true;
}
}
ctx->current_fs = previous_fs;
SAFE_FREE(filename);
+1 -1
Ver Arquivo
@@ -120,7 +120,7 @@ static int _merge_file_trees_visitor(void *obj, void *data) {
ctx = (CSYNC *) data;
/* search for UPDATED file */
if (fs->instruction != CSYNC_INSTRUCTION_UPDATED) {
if (fs->instruction != CSYNC_INSTRUCTION_UPDATED && !fs->should_update_md5) {
rc = 0;
goto out;
}