summaryrefslogtreecommitdiff
path: root/tftpd
diff options
context:
space:
mode:
Diffstat (limited to 'tftpd')
-rw-r--r--tftpd/recvfrom.c3
-rw-r--r--tftpd/tftpd.c4
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;