commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chuck Wolber (JIRA)" <j...@apache.org>
Subject [jira] [Created] (NET-412) Apache Commons TFTP implementation subject to Sorcerer's Apprentice Syndrome
Date Sat, 28 May 2011 03:43:47 GMT
Apache Commons TFTP implementation subject to Sorcerer's Apprentice Syndrome
----------------------------------------------------------------------------

                 Key: NET-412
                 URL: https://issues.apache.org/jira/browse/NET-412
             Project: Commons Net
          Issue Type: Bug
          Components: TFTP
    Affects Versions: 3.0, 2.2
         Environment: Java 6 patch 20
            Reporter: Chuck Wolber
            Priority: Critical


This is regarding the org.apache.commons.net.tftp.TFTPClient class.

In the sendFile() method, when a duplicate TFTP ACK is received, the "if (lastBlock == block)"
section of code fails and control moves to the "else" statement. The else block checks to
see if the ACK is for the previous DATA packet, and if so, sends control back to the _sendPacket
label where the DATA packet is resent.

This is in direct violation of Sorcerer's Apprentice Syndrome as defined in RFC 1123 section
4.2.3.1:

"the sender (i.e., the side originating the DATA packets) must never resend the current DATA
packet on receipt of a duplicate ACK"

The proper else block would look something like this:

{
    continue _receivePacket;
}

This enables the client to ignore the duplicated ACK and listen for ACK+1. If ACK+1 never
comes in, the listener should timeout and attempt to resend the current data packet. As described
in NET-410, the TFTP client also does not properly handle re-transmits either. It is recommended
that this issue and NET-410 be implemented in tandem.





--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message