diff options
-rw-r--r-- | lib/tftp.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/tftp.c b/lib/tftp.c index 83be8e2b9..95da9b893 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -719,7 +719,13 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event) /* Ack the packet */ rblock = getrpacketblock(&state->rpacket); - if(rblock != state->block) { + if(rblock != state->block && + /* There's a bug in tftpd-hpa that causes it to send us an ack for + * 65535 when the block number wraps to 0. So when we're expecting + * 0, also accept 65535. See + * http://syslinux.zytor.com/archives/2010-September/015253.html + * */ + !(state->block == 0 && rblock == 65535)) { /* This isn't the expected block. Log it and up the retry counter */ infof(data, "Received ACK for block %d, expecting %d\n", rblock, state->block); |