aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2005-02-27 07:33:01 +0000
committerWayne Davison <wayned@samba.org>2005-02-27 07:33:01 +0000
commit40df65fdb47e025392e2cf5cc3059d627b61ccac (patch)
treee89fc0f476a317324b9c2b635cc42ba289b133f2 /main.c
parentcb2e1f18c21bfe197e5f08e1553057ea440d320c (diff)
downloadandroid_external_rsync-40df65fdb47e025392e2cf5cc3059d627b61ccac.tar.gz
android_external_rsync-40df65fdb47e025392e2cf5cc3059d627b61ccac.tar.bz2
android_external_rsync-40df65fdb47e025392e2cf5cc3059d627b61ccac.zip
- Seems to me that sigusr2_handler() should call close_all() for
the sake of MS Windows. - Improved some comments.
Diffstat (limited to 'main.c')
-rw-r--r--main.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/main.c b/main.c
index 07603a5a..5ad21c92 100644
--- a/main.c
+++ b/main.c
@@ -560,9 +560,8 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
send_msg(MSG_DONE, "", 0);
io_flush(FULL_FLUSH);
- /* Finally, we hang around until our parent kills us with a
- * USR2 signal. If --delete-after was specified, we might get
- * a keep-alive message over the socket, so handle that too. */
+ /* Handle any keep-alive packets from the post-processing work
+ * that the generator does. */
if (protocol_version >= 29) {
kluge_around_eof = -1;
while (read_int(f_in) == flist->count) {
@@ -571,6 +570,9 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name)
}
}
+ /* Finally, we hang around waiting for our parent to kills
+ * us with a USR2 signal. We sleep for a short time, as on
+ * some OSes a signal won't interrupt a sleep! */
while (1)
msleep(20);
}
@@ -1044,6 +1046,7 @@ static RETSIGTYPE sigusr1_handler(UNUSED(int val))
static RETSIGTYPE sigusr2_handler(UNUSED(int val))
{
+ close_all();
if (log_got_error) _exit(RERR_PARTIAL);
_exit(0);
}