svn commit: r368755 - stable/12/libexec/tftpd
Michael Tuexen
tuexen at FreeBSD.org
Fri Dec 18 10:08:12 UTC 2020
Author: tuexen
Date: Fri Dec 18 10:08:11 2020
New Revision: 368755
URL: https://svnweb.freebsd.org/changeset/base/368755
Log:
MFC r368394:
When dropping packets (RRQ or WRQ) for debugging, report the send
operation as successful. Reporting a failure stops the transfer
instead of using timeouts.
MFC r368521:
Fix the TFTP client when performing a RRQ for files smaller than 512 bytes
and the server not sending an OACK:
* Close the file.
* Report the correct the number of received blocks.
MFC r368647:
Improve the counting of blocks used to transfer a file from the
server to the client in case of not using an OACK: Don't miss
the first block in case of it is not also the last one.
MFC r368657:
When receiving a file having a length, which is a mulitple of the blocksize,
close the file once it is received.
Modified:
stable/12/libexec/tftpd/tftp-io.c
stable/12/libexec/tftpd/tftp-transfer.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/libexec/tftpd/tftp-io.c
==============================================================================
--- stable/12/libexec/tftpd/tftp-io.c Fri Dec 18 08:43:06 2020 (r368754)
+++ stable/12/libexec/tftpd/tftp-io.c Fri Dec 18 10:08:11 2020 (r368755)
@@ -190,7 +190,7 @@ send_wrq(int peer, char *filename, char *mode)
filename, mode
);
- DROPPACKETn("send_wrq", 1);
+ DROPPACKETn("send_wrq", 0);
tp = (struct tftphdr *)buf;
tp->th_opcode = htons((u_short)WRQ);
@@ -238,7 +238,7 @@ send_rrq(int peer, char *filename, char *mode)
filename, mode
);
- DROPPACKETn("send_rrq", 1);
+ DROPPACKETn("send_rrq", 0);
tp = (struct tftphdr *)buf;
tp->th_opcode = htons((u_short)RRQ);
Modified: stable/12/libexec/tftpd/tftp-transfer.c
==============================================================================
--- stable/12/libexec/tftpd/tftp-transfer.c Fri Dec 18 08:43:06 2020 (r368754)
+++ stable/12/libexec/tftpd/tftp-transfer.c Fri Dec 18 10:08:11 2020 (r368755)
@@ -258,6 +258,7 @@ tftp_receive(int peer, uint16_t *block, struct tftp_st
if (firstblock != NULL) {
writesize = write_file(firstblock->th_data, fb_size);
ts->amount += writesize;
+ ts->blocks++;
windowblock++;
if (windowsize == 1 || fb_size != segsize) {
for (i = 0; ; i++) {
@@ -280,6 +281,7 @@ tftp_receive(int peer, uint16_t *block, struct tftp_st
}
if (fb_size != segsize) {
+ write_close();
gettimeofday(&(ts->tstop), NULL);
return;
}
@@ -395,9 +397,9 @@ tftp_receive(int peer, uint16_t *block, struct tftp_st
send_error(peer, ENOSPACE);
goto abort;
}
- if (n_data != segsize)
- write_close();
}
+ if (n_data != segsize)
+ write_close();
windowblock++;
/* Only send ACKs for the last block in the window. */
More information about the svn-src-stable-12
mailing list