diff options
Diffstat (limited to 'tftpd')
-rw-r--r-- | tftpd/recvfrom.c | 3 | ||||
-rw-r--r-- | tftpd/tftpd.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/tftpd/recvfrom.c b/tftpd/recvfrom.c index 389ba82..3ee5642 100644 --- a/tftpd/recvfrom.c +++ b/tftpd/recvfrom.c @@ -245,7 +245,8 @@ myrecvfrom(int s, void *buf, int len, unsigned int flags, int myrecvfrom(int s, void *buf, int len, unsigned int flags, - struct sockaddr *from, int *fromlen, union sock_addr *myaddr) + struct sockaddr *from, socklen_t * fromlen, + union sock_addr *myaddr) { /* There is no way we can get the local address, fudge it */ diff --git a/tftpd/tftpd.c b/tftpd/tftpd.c index 1f946f6..c122d61 100644 --- a/tftpd/tftpd.c +++ b/tftpd/tftpd.c @@ -1648,6 +1648,10 @@ static void tftp_recvfile(const struct formats *pf, struct tftphdr *oap, int oac ap->th_opcode = htons((u_short) ACK); ap->th_block = htons((u_short) block); acksize = 4; + /* If we're sending a regular ACK, that means we have successfully + * sent the OACK. Clear oap so that we won't try to send another + * OACK when the block number wraps back to 0. */ + oap = NULL; } if (!++block) block = rollover_val; |