[
https://issues.apache.org/jira/browse/NET-181?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12571802#action_12571802
]
Dan Armbrust commented on NET-181:
----------------------------------
Here is a patch which implements block wrapping.
I tested this against the tftpd server in Ubuntu, and against my own tftp
server which I will be attaching shortly.
{noformat}
Index: TFTPClient.java
===================================================================
--- . (revision 630373)
+++ . (working copy)
@@ -231,6 +231,12 @@
throw e;
}
++block;
+ if (block > 65535)
+ {
+ // wrap the
block number
+ block = 0;
+ }
+
break _receivePacket;
}
else
@@ -237,7 +243,7 @@
{
discardPackets();
- if (lastBlock == (block - 1))
+ if (lastBlock == (block == 0 ? 65535 : (block -
1)))
continue _sendPacket; // Resend last
acknowledgement.
continue _receivePacket; // Start fetching packets
again.
@@ -464,6 +470,11 @@
if (lastBlock == block)
{
++block;
+ if (block > 65535)
+ {
+ // wrap the
block number
+ block = 0;
+ }
if (lastAckWait) {
break _sendPacket;
@@ -476,7 +487,7 @@
{
discardPackets();
- if (lastBlock == (block - 1))
+ if (lastBlock == (block == 0 ? 65535 : (block -
1)))
continue _sendPacket; // Resend last
acknowledgement.
continue _receivePacket; // Start fetching packets
again.
{noformat}
> tftp client limited to ~32 MB file sizes
> ----------------------------------------
>
> Key: NET-181
> URL: https://issues.apache.org/jira/browse/NET-181
> Project: Commons Net
> Issue Type: Improvement
> Environment: All
> Reporter: Dan Armbrust
> Priority: Minor
>
> I just noticed that the TFTPClient class does not support a block wraparound
> - hence, when the block number exceeds the max allowed by the rfc (65535) -
> about a 32 mb file - bad things will happen.
> I can't find any rfc that specifies how the wraparound is supposed to occur,
> but this wiki page mentions it:
> http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
> And I am working on implementing a TFTPServer - and in my tests with the tftp
> client that is shipped with fedora, I have determined that that tftp client
> expects the next block number after 65535 to be 0.
> So it appears that the TFTPClient should wrap its block number so that it
> properly supports larger files.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.