Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed more potential hang cases for incremental recursion.
[rsync/rsync.git]
/
generator.c
diff --git
a/generator.c
b/generator.c
index
e80daf2
..
d1864b7
100644
(file)
--- a/
generator.c
+++ b/
generator.c
@@
-1902,8
+1902,10
@@
void generate_files(int f_out, const char *local_name)
break;
}
break;
}
- while (
!cur_flist->next && !flist_eof
) {
+ while (
1
) {
check_for_finished_files(itemizing, code, 1);
check_for_finished_files(itemizing, code, 1);
+ if (cur_flist->next || flist_eof)
+ break;
wait_for_receiver();
}
} while ((cur_flist = cur_flist->next) != NULL);
wait_for_receiver();
}
} while ((cur_flist = cur_flist->next) != NULL);
@@
-1914,8
+1916,10
@@
void generate_files(int f_out, const char *local_name)
if (verbose > 2)
rprintf(FINFO, "generate_files phase=%d\n", phase);
if (verbose > 2)
rprintf(FINFO, "generate_files phase=%d\n", phase);
- while (
!msgdone_cnt
) {
+ while (
1
) {
check_for_finished_files(itemizing, code, 1);
check_for_finished_files(itemizing, code, 1);
+ if (msgdone_cnt)
+ break;
wait_for_receiver();
}
wait_for_receiver();
}
@@
-1929,8
+1933,10
@@
void generate_files(int f_out, const char *local_name)
write_ndx(f_out, NDX_DONE);
/* Read MSG_DONE for the redo phase (and any prior messages). */
write_ndx(f_out, NDX_DONE);
/* Read MSG_DONE for the redo phase (and any prior messages). */
- while (
msgdone_cnt <=
1) {
+ while (1) {
check_for_finished_files(itemizing, code, 0);
check_for_finished_files(itemizing, code, 0);
+ if (msgdone_cnt > 1)
+ break;
wait_for_receiver();
}
wait_for_receiver();
}