diff options
| author | Wayne Davison <wayned@samba.org> | 2005-02-26 20:58:05 +0000 |
|---|---|---|
| committer | Wayne Davison <wayned@samba.org> | 2005-02-26 20:58:05 +0000 |
| commit | 574c250093f19e1876c4af0de704ac219783b805 (patch) | |
| tree | c90357481c22a81724446a38b21a98cd6bbc7538 /io.c | |
| parent | 8dad7fc6eace2c406c279ce98a00653085c700ca (diff) | |
| download | android_external_rsync-574c250093f19e1876c4af0de704ac219783b805.tar.gz android_external_rsync-574c250093f19e1876c4af0de704ac219783b805.tar.bz2 android_external_rsync-574c250093f19e1876c4af0de704ac219783b805.zip | |
If kluge_around_eof is < 0, we go into an msleep() loop instead
of exiting.
Diffstat (limited to 'io.c')
| -rw-r--r-- | io.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -76,11 +76,11 @@ int batch_gen_fd = -1; const char *io_write_phase = phase_unknown; const char *io_read_phase = phase_unknown; -/* Ignore EOF errors while reading a module listing if the remote - * version is 24 or less. Also used by the receiver when it is - * reading a potential end-of-transfer keep-alive message that - * may never come. */ -int kludge_around_eof = False; +/* Ignore an EOF error if non-zero. We exit if the value is 1 (used while + * reading a module listing if the remote version is 24 or less) or go into a + * sleep loop if the value is 2 (used by the receiver when it is reading a + * potential end-of-transfer keep-alive message that may never come). */ +int kluge_around_eof = 0; int msg_fd_in = -1; int msg_fd_out = -1; @@ -372,12 +372,16 @@ void io_set_filesfrom_fds(int f_in, int f_out) * rsync <2.4.6 sending a list of modules on a server, since the list * is terminated by closing the socket. So, for the section of the * program where that is a problem (start_socket_client), - * kludge_around_eof is True and we just exit. + * kluge_around_eof is True and we just exit. */ static void whine_about_eof(int fd) { - if (kludge_around_eof && fd == sock_f_in) - exit_cleanup(0); + if (kluge_around_eof && fd == sock_f_in) { + if (kluge_around_eof > 0) + exit_cleanup(0); + while (1) + msleep(20); + } rprintf(FERROR, RSYNC_NAME ": connection unexpectedly closed " "(%.0f bytes received so far) [%s]\n", |
