You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Jennifer Hodgdon (JIRA)" <ji...@apache.org> on 2006/09/22 17:32:23 UTC

[jira] Commented: (NET-68) [net] TFTPClient's send file discards last ack

    [ http://issues.apache.org/jira/browse/NET-68?page=comments#action_12436885 ] 
            
Jennifer Hodgdon commented on NET-68:
-------------------------------------

Neither the 1.41 release version of TFTPClient.java, nor the current nightly build version (as of Sept 15 2006) is working, actually. This bug is still happening. I will attach a zip file (which I just mistakenly put into Bugzilla, sorry!) with some test code.

The nightly build version is definitely doing what the bug report stated: dropping the last ACK. When TFTPClient sends a file, it sends a data packet and waits for an ACK, but after the last data packet, it doesn't pick up the last ACK, and then when TFTPClient goes to send/receive another file from the same server, the first thing it gets is the last ACK from the previous send, and it reports an "unexpected packet received" and fails.

The version from the 1.41 release doesn't work either -- I can't recall exactly what is wrong with it, actually, but I tested it and it does not work.

The version I will attach does work. It would probably be a good idea to use something like this in the next release.

I'll also attach my test code: a TFTPClientApp and TFTPServerApp that can be run on two different computers to test the workings of the TFTPClient class.

> [net] TFTPClient's send file discards last ack
> ----------------------------------------------
>
>                 Key: NET-68
>                 URL: http://issues.apache.org/jira/browse/NET-68
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 1.3 Final
>         Environment: Operating System: Linux
> Platform: PC
>            Reporter: Perttu Auramo
>             Fix For: 2.0, 1.5
>
>         Attachments: patch
>
>
> TFTPClient reads all acks just fine except the last-one when sending a file. I
> figured this out when I tried to use the same TFTPClient-instance for something
> else (reading a file) after sending a file. This ack was next in the buffer and
> some exception was thrown (don't remember which anymore). 
> I fixed this for myself using a flag (lastAckWait). Here is a the result of
> diff-command:
> diff -u TFTPClient.java.original TFTPClient.java.patched
> --- TFTPClient.java.original    2004-12-28 15:02:37.235997984 +0200
> +++ TFTPClient.java.patched     2004-12-28 15:09:14.516602152 +0200
> @@ -372,6 +372,7 @@
>          dataLength = lastBlock = hostPort = bytesRead = 0;
>          block = 0;
> +        boolean lastAckWait = false;
>          if (mode == TFTP.ASCII_MODE)
>              input = new ToNetASCIIInputStream(input);
> @@ -455,7 +456,10 @@
>                          if (lastBlock == block)
>                          {
>                              ++block;
> -                            break _receivePacket;
> +                            if (lastAckWait)
> +                              break _sendPacket;
> +                            else
> +                              break _receivePacket;
>                          }
>                          else
>                          {
> @@ -501,9 +505,8 @@
>              data.setData(_sendBuffer, 4, offset - 4);
>              sent = data;
>          }
> -        while (dataLength == 0);
> +        while (dataLength == 0 || lastAckWait);
> -        bufferedSend(sent);
>          endBufferedOps();
>      }
> By the way we have implemented a TFTP server also (heavily unit-tested). I could
> try to contribute it back if it fits in commons net. There was some talk in the
> web-pages of doing only client-side stuff for commons-net. 
> -Perttu

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org