commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rory Winston (JIRA)" <j...@apache.org>
Subject [jira] Updated: (NET-68) [net] TFTPClient's send file discards last ack
Date Sun, 27 Aug 2006 13:54:23 GMT
     [ http://issues.apache.org/jira/browse/NET-68?page=all ]

Rory Winston updated NET-68:
----------------------------

      Bugzilla Id:   (was: 32859)
    Fix Version/s: 1.5
                   2.0

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


Mime
View raw message