aboutsummaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorDoug Ambrisko <ambrisko@FreeBSD.org>2002-04-09 19:13:43 +0000
committerDoug Ambrisko <ambrisko@FreeBSD.org>2002-04-09 19:13:43 +0000
commitff93f08c063dc45a11f3dbeb20a13c70cd5f6802 (patch)
tree482d06c360ce87ad7d7bf200f2c85d773c555655 /libexec
parent7f5092f3306a6cfe206a9708661002ace515e4ec (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/tftpd/tftpd.c16
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 ( ; ; ) {