diff options
| author | Doug Ambrisko <ambrisko@FreeBSD.org> | 2002-04-09 19:13:43 +0000 |
|---|---|---|
| committer | Doug Ambrisko <ambrisko@FreeBSD.org> | 2002-04-09 19:13:43 +0000 |
| commit | ff93f08c063dc45a11f3dbeb20a13c70cd5f6802 (patch) | |
| tree | 482d06c360ce87ad7d7bf200f2c85d773c555655 /libexec | |
| parent | 7f5092f3306a6cfe206a9708661002ace515e4ec (diff) | |
Notes
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/tftpd/tftpd.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c index 719286667c9a..057a3bd21662 100644 --- a/libexec/tftpd/tftpd.c +++ b/libexec/tftpd/tftpd.c @@ -576,9 +576,19 @@ xmitfile(struct formats *pf) (void)setjmp(timeoutbuf); send_data: - if (send(peer, dp, size + 4, 0) != size + 4) { - syslog(LOG_ERR, "write: %m"); - goto abort; + { + int i, t = 1; + for (i = 0; ; i++){ + if (send(peer, dp, size + 4, 0) != size + 4) { + sleep(t); + t = (t < 32) ? t<< 1 : t; + if (i >= 12) { + syslog(LOG_ERR, "write: %m"); + goto abort; + } + } + break; + } } read_ahead(file, pf->f_convert); for ( ; ; ) { |
