commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Armbrust (JIRA)" <j...@apache.org>
Subject [jira] Commented: (NET-181) tftp client limited to ~32 MB file sizes
Date Sat, 23 Feb 2008 23:28:21 GMT

    [ 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.


Mime
View raw message