aboutsummaryrefslogtreecommitdiff
path: root/lib/tftp.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tftp.c')
-rw-r--r--lib/tftp.c8
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);