diff options
author | Wayne Davison <wayned@samba.org> | 2005-02-25 21:58:13 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2005-02-25 21:58:13 +0000 |
commit | 9e2409ab2213cf560264dcd34d8537b6a7be4e89 (patch) | |
tree | 749835462dcc44b4aee055b7a00eea358bf34534 /io.c | |
parent | 8e6cf5d1891caeed1b1e6c446b8723cd33969b06 (diff) | |
download | android_external_rsync-9e2409ab2213cf560264dcd34d8537b6a7be4e89.tar.gz android_external_rsync-9e2409ab2213cf560264dcd34d8537b6a7be4e89.tar.bz2 android_external_rsync-9e2409ab2213cf560264dcd34d8537b6a7be4e89.zip |
- Added variable "ignore_timeout" that lets the generator tell
us to ignore a timeout without turning off the timeout-related
time-keeping that the keep-alive processing needs.
- Added a new function: maybe_send_keepalive().
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -56,6 +56,7 @@ extern struct stats stats; const char phase_unknown[] = "unknown"; int select_timeout = SELECT_TIMEOUT; +int ignore_timeout = 0; int batch_fd = -1; int batch_gen_fd = -1; @@ -137,7 +138,7 @@ static void check_timeout(void) { time_t t; - if (!io_timeout) + if (!io_timeout || ignore_timeout) return; if (!last_io) { @@ -634,6 +635,19 @@ void io_end_buffering(void) } +void maybe_send_keepalive(int allowed_lull, int ndx) +{ + if (time(NULL) - last_io >= allowed_lull) { + if (!iobuf_out || !iobuf_out_cnt) { + write_int(sock_f_out, ndx); + write_shortint(sock_f_out, ITEM_IS_NEW); + } + if (iobuf_out) + io_flush(NORMAL_FLUSH); + } +} + + /** * Continue trying to read len bytes - don't return until len has been * read. @@ -1014,6 +1028,7 @@ static void writefd_unbuffered(int fd,char *buf,size_t len) * to grab any messages they sent before they died. */ while (fd == sock_f_out && io_multiplexing_in) { io_timeout = select_timeout = 30; + ignore_timeout = 0; readfd_unbuffered(sock_f_in, io_filesfrom_buf, sizeof io_filesfrom_buf); } |