diff options
author | Andrew Tridgell <tridge@samba.org> | 2000-08-29 05:07:08 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2000-08-29 05:07:08 +0000 |
commit | e92ee12893ca6320f5331384b2c2e8560ca9c88a (patch) | |
tree | 26914254ca5eea9aeb3251e9876ceba99f5abbf1 | |
parent | 5c66303ad6a6bd195b3d5a982f706aa51e686bac (diff) | |
download | rsync-e92ee12893ca6320f5331384b2c2e8560ca9c88a.tar.gz |
make sure we don't chew too much CPU when the outgoing fd is full
-rw-r--r-- | io.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -372,6 +372,7 @@ static void writefd_unbuffered(int fd,char *buf,int len) if (ret == -1 && (errno == EWOULDBLOCK || errno == EAGAIN)) { + msleep(1); continue; } @@ -463,6 +464,17 @@ void io_end_buffering(int fd) } } +/* some OSes have a bug where an exit causes the pending writes on + a socket to be flushed. Do an explicit shutdown to try to prevent this */ +void io_shutdown(void) +{ + if (multiplex_out_fd != -1) close(multiplex_out_fd); + if (io_error_fd != -1) close(io_error_fd); + multiplex_out_fd = -1; + io_error_fd = -1; +} + + static void writefd(int fd,char *buf,int len) { stats.total_written += len; |