<?xml version="1.0"?>
<!--

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

-->
<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits. Set the project.properties' maven.changelog.range
property to the number of days since the last release.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the formatting if necessary
and commit

The <action> type attribute can be add,update,fix,remove.
-->

<document>
    <properties>
        <title>Changes</title>
        <author email="dev@commons.apache.org">Apache Commons developers</author>
    </properties>

    <!-- NOTE:
    The description below is specially formatted so as to improve the layout of the generated release notes:
    The parsing process removes all line feeds, replacing them with a single space.
    The Velocity template in resources/templates has been enhanced to replace pairs of adjacent spaces
    with a new-line in the release notes. (These spaces are ignored when displaying HTML).
    If the output is not quite correct, check for invisible trailing spaces!

    N.B. The release notes template groups actions by type, and only extracts data for the current release.
    The changes report outputs actions in the order they appear in this file.

    To regenerate the release notes:
    mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

    Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
     -->

    <body>
        <release version="3.6" date="TBA" description="
This is mainly a bug-fix release. See further details below.


 This release is binary compatible with previous releases.
 However it is not source compatible with releases before 3.4, as some methods were added to the interface NtpV3Packet in 3.4

  The code now requires a minimum of Java 1.6.

  Changes to functionality:
  The FTP client now performs stricter checks on non-multiline command replies.
  The 3 digit code must now be followed by a space and some text, as per RFC 959.
  To suppress this stricter checking, call FTP#setStrictReplyParsing(false). This should not be needed with a well-behaved server.
  Note also that if strict checking is disabled, some functions may unconditionally strip the next character after the code,
without checking it if is a space.

  The FTP client mlistFile() method now checks for a leading space before removing it.
  If the space is missing, a MalformedServerReplyException is thrown.
  This will only happen if the FTP server is not compliant with RFC 3659.

  Notable additions:
  The POP3Mail examples can now get password from console, stdin or an environment variable.
  
">
            <action issue="NET-320" type="fix" dev="sebb" due-to="Kevin Bulebush">
            Allow TFTPServer.java to bind to a specific network adapter
            </action>
            <action issue="NET-414" type="fix" dev="sebb" due-to="Chuck Wolber">
            Apache Commons TFTP does not reject request replies that originate from a control port.
            </action>
            <action issue="NET-477" type="fix" dev="sebb" due-to="John Walton">
            TFTP sendFile retry broken
            </action>
            <action issue="NET-612" type="update" dev="sebb">
            Allow TFTP socket IO tracing
            </action>
            <action issue="NET-596" type="fix" dev="sebb" due-to="Vincent Bories-Azeau">
            NullPointerException when disconnecting TelnetClient twice with JDK 7
            </action>
            <action issue="NET-602" type="fix" dev="sebb" due-to="Ross Braithwaite">
            Failure to parse times from SYST_L8 systems that report as "WINDOWS Type: L8"
            </action>
            <action issue="NET-604" type="fix" dev="sebb" due-to="Frank Delporte">
            TFTP send & receive don't have progress indication
            </action>
            <action issue="NET-588" type="fix" dev="sebb" due-to="Dave Nice / Thai H">
            FTPClient.setPassiveNatWorkaround assumes host is outside site local range
            </action>
            <action issue="NET-610" type="fix" dev="sebb" due-to="Sergey Yanzin">
            FTPClient.mlistFile incorrectly handles MLST reply
            </action>
            <action issue="NET-611" type="fix" dev="sebb">
            FTP does not validate command reply syntax fully
            </action>
            <action issue="NET-609" type="fix" dev="sebb" due-to="Tqup3">
            DefaultUnixFTPFileEntryParserFactory Issue (leading spaces removal configuration)
            </action>
            <action type="update" dev="sebb">
            POP3Mail example: support host port; allow reading password from Console/stdin/environment
            </action>
            <action issue="NET-597" type="fix" dev="sebb" due-to="Hiroki Taniura">
            FTP fails to parse listings for Solaris 10 FTPd in Japanese
            </action>
            <action issue="NET-599" type="update" dev="sebb">
            Add shorthand FTPClientConfig constructor
            </action>
            <action issue="NET-593" type="fix" dev="sebb" due-to="Jörg Weule">
            HostnameVerifier is called with ip addess instead of the provided hostname
            </action>
            <action issue="NET-594" type="fix" dev="sebb" due-to="Brad Worrral">
            TelnetClient._closeOutputStream unhandled exception from FilterOutputStream.close
            </action>
            <action issue="NET-592" type="fix" dev="sebb" due-to="Mark Ford">
            plainSocket in FTPSClient is never closed
            </action>
        </release>
        <release version="3.5" date="2016-05-05" description="
This is mainly a bug-fix release. See further details below.


 This release is binary compatible with previous releases.
 However it is not source compatible with releases before 3.4, as some methods were added to the interface NtpV3Packet in 3.4

  The code now requires a minimum of Java 1.6.

  Notable additions:
  The IMAP examples can now get password from console, stdin or an environment variable.
        ">
            <action issue="NET-583" type="fix" dev="sebb" due-to="Holger Rehn">
            FTPClient.getReplyString() returns wrong value after connect()
            </action>
            <action type="add" dev="sebb">
            Alternative password input methods for IMAP examples
            </action>
            <action type="add" dev="sebb">
            More tests for Feb 29 handling.
            </action>
            <action issue="NET-586" type="fix" dev="sebb">
            Don't use Feb 29 for short future date tests
            </action>
            <action type="fix" dev="sebb">
            Documentation tweaks
            </action>
        </release>
        <release version="3.4" date="2015-11-26" description="
This is mainly a bug-fix release. See further details below.

  This release is binary compatible with previous releases.
  However it is not source compatible, as some methods have been added to the interface NtpV3Packet

  Notable additions:
  IMAPExportMbox (example app) allows IMAP folders to be exported into an mbox file.
  This is the inverse of the IMAPImportMbox example added previously
        ">
            <action issue="NET-581" type="fix" dev="sebb">
            SimpleSMTPHeader fails to supply the required Date: header
            </action>
            <action issue="NET-582" type="fix" dev="sebb">
            SimpleSMTPHeader does not allow for missing To: field
            </action>
            <action issue="NET-580" type="fix" dev="sebb" due-to="Simon Arlott">
            SMTPClient.sendSimpleMessage() silently ignores failed recipients
            Update Javadoc
            </action>
            <action issue="NET-579" type="fix" dev="sebb" due-to="Simon Arlott">
            SSL/TLS SocketClients do not verify the hostname against the certificate
            </action>
            <action issue="NET-576" type="update" dev="sebb">
            Allow FTPClient to use SYST response if system type is not specified in configuration
            </action>
            <action issue="NET-575" type="update" dev="sebb">
            FTPClientExample should support setting the date format
            </action>
            <action issue="NET-538" type="fix" dev="sebb" due-to="Dzmitry">
            FTPHTTPClient should use socket factory to create sockets
            </action>
            <action issue="NET-566" type="fix" dev="sebb" due-to="Gary Russell">
            UnixFTPEntryParser Drops Leading Spaces from File Names
            </action>
            <action type="update" dev="sebb">
            examples/Main now uses a property file to define aliases instead of scanning class files
            </action>
            <action issue="NET-552" type="fix" dev="sebb" due-to="Quentin Devriendt">
            SocketTimeoutException connecting a FTP server via an HTTP Proxy
            </action>
            <action issue="NET-528" type="add" dev="sebb">
            FTPListParseEngine does not provide access to raw responses
            </action>
            <action issue="NET-565" type="add" dev="sebb">
            Add FTPClient method to return an FTPFile from an MDTM command
            </action>
            <action issue="NET-564" type="update" dev="sebb">
            FTPFile.toFormattedString - allow specification of TimeZone for display
            </action>
            <action issue="NET-562" type="update" dev="sebb">
            FTPFile.toFormattedString should print only signficant parts of the parsed date
            </action>
            <action issue="NET-563" type="fix" dev="sebb">
            MLSxEntryParser needs test cases; parsing is too lax
            </action>
            <action issue="NET-561" type="fix" dev="sebb">
            FTPFile.toFormattedString prints user and group in wrong order
            </action>
            <action issue="NET-544" type="fix" dev="sebb" due-to="Olivier Queyrut ">
            FTPClient.initiateListParsing does not correctly check if parserKey was cached
            </action>
            <action issue="NET-554" type="update" dev="sebb">
            Simplify TelnetOptionHandler class hierarchy
            </action>
            <action issue="NET-558" type="fix" dev="sebb" due-to="Ralph Becker">
            FTPClient.getModificationTime(filename) returns complete received line including response code and EOL
            Strip the response code and EOL
            </action>
            <action issue="NET-556" type="update" dev="sebb" due-to="Andy Rosa">
            Make SubnetInfo.isInRange(int) public
            </action>
            <action issue="NET-550" type="fix" dev="sebb" due-to="Geoffrey Hardy">
            Default FTPClient bufferSize results in very slow retrieve transfers
            Fix code in Util#copyStream (also copyReader) that failed to use the proper default for buffer size 0
            </action>
            <action issue="NET-551" type="fix" dev="sebb">
            Util copyReader calls CopyStreamListener.bytesTransferred with the incorrect value for bytesTransferred
            </action>
            <action type="update" dev="sebb">
            Added control character processing to TelnetClientExample
            </action>
            <action issue="NET-547" type="update" dev="sebb" due-to="Fabio Scippacercola">
            There is a lack of documentation regarding setControlKeepAliveTimeout
            </action>
            <action issue="NET-549" type="fix" dev="sebb" due-to="Pradeep Natarajan">
            Telnet does not convert LF to CRLF in ASCII mode
            </action>
            <action issue="NET-543" type="fix" dev="sebb" due-to="Ferry Huberts">
            telnet: spy read EOL is reversed
            </action>
            <action issue="NET-540" type="add" dev="sebb">
            Article#printThread should have option to use any PrintStream
            </action>
            <action issue="NET-539" type="fix" dev="sebb">
            NPE if Threader.thread invoked with empty list or with null array
            </action>
            <action issue="NET-536" type="add" dev="sebb">
            IMAP FETCH example
            IMAPExportMbox can export selected nessages from an IMAP folder
            </action>
            <action issue="NET-535" type="add" dev="sebb">
            IMAP FETCH can overflow reply buffer; provide for partial responses
            </action>
            <action issue="NET-534" type="update" dev="sebb">
            Unnecesssary call to getReplyString() if no listeners configured
            </action>
            <action issue="NET-530" type="fix" dev="sebb" due-to="fish ship">
            input parameter of org.apache.commons.net.ftp.FTP.__getReply(boolean) is not used
            </action>
            <action issue="NET-529" type="fix" dev="sebb" due-to="Putinas Piliponis">
            SubnetUtils throws exception on valid input
            </action>
            <action issue="NET-527" type="add" dev="sebb" due-to="jason mathews">
            Add SimpleNTPServer as example and for testing
            </action>
            <action issue="NET-516" type="fix" dev="sebb" due-to="Asha K S &amp; pavan">
            parser problem occurs if the filename contains one or more characters of which the second byte of Shift-JIS code is 0x85
            Fix NT parser
            </action>
            <action type="update" dev="sebb">
            Added control encoding option to FTPClientExample
            </action>
            <action issue="NET-526" type="update" dev="sebb" due-to="Jason Mathews, MITRE Corp">
            Added missing set methods on NTP class and interface
            </action>
            <action issue="NET-526" type="update" dev="sebb">
            Avoid greedy matches within a regex
            </action>
            <action issue="NET-520" type="fix" dev="sebb">
            SubnetUtils("0.0.0.0/0") does not behave as expected
            Fixed range checking so network and broadcast addresses are treated as unsigned ints
            </action>
            <action issue="NET-521" type="fix" dev="sebb">
            SubnetUtils.SubnetInfo.getAddressCount() can overflow as it returns an int
            </action>
            <action issue="NET-515" type="fix" due-to="Sebastian Ritter">
            FTPClient sample in class javadoc "bug"
            </action>
            <action issue="NET-519" type="fix">
            Apache Commons Net 3.3 has a performance issue
            </action>
            <action issue="NET-517" dev="sebb" type="fix" due-to="David Kocher">
            FTPClient#reinitialize is package protected
            </action>
            <action issue="NET-512" dev="sebb" type="add" due-to="Thomas Raddatz">
            Downloading files or members from the AS400 QSYS file system is not supported
            </action>
            <action issue="NET-518" dev="sebb" type="fix" due-to="David Kocher">
            FTPClient#initFeatureMap should not initialize empty map if reply code is 530
            </action>
            <action issue="NET-514" dev="sebb" type="fix">
            IMAP APPEND multiple issues in IMapClient.
            Deprecated unusable append methods.
            Added new append method, as well as example IMapImportMbox class to make use of it.
            </action>
            <action issue="NET-511" dev="ggregory" type="fix" due-to="Kyriacos Elia, Daniel Scott">
            Exception for new SubnetUtils("0.0.0.0/0").
            </action>
        </release>
        <release version="3.3" date="2013-06-11" description="
This is mainly a bug-fix release. See further details below.
        ">
            <action issue="NET-509" dev="sebb" due-to="Anthony Dahanne" type="update">
            AuthenticatingSMTPClient needs a constructor with the isImplicit argument for SSL
            </action>
            <action issue="NET-501" dev="sebb"  due-to="Julián Lastiri" type="fix">
            Race Condition on TelnetClient.disconnect() and TelnetInputStream.run()
            java.lang.IllegalStateException: Queue is full! Cannot process another character.
            </action>
            <action issue="NET-505" dev="sebb" due-to="Sean Kelley" type="update">
            User specified bufferSize reset to default when FTPClient is disconnected or reinitialized resulting in performance degradation.
            </action>
            <action issue="NET-507" dev="sebb" due-to="Jiri Netolicky" type="update">
            Option to disable private IP replacement in FTP passive mode.
            </action>
            <action issue="NET-503" dev="sebb" due-to="Ofer Regev" type="add">
            AuthenticatingSMTPClient does not support non-default encoding
            </action>
            <action issue="NET-500" dev="sebb" due-to="Michael Frick" type="fix">
            Always call FTPClient#setFileType after connection.
            Not all servers default to ASCII.
            </action>
            <action issue="NET-465" dev="sebb" due-to="Jim Kerwood" type="fix">
            FTPClient setSendBufferSize and setReceiveBufferSize on data socket.
            The previous fix caused performance problems.
            Added new getters and setters for the SO_SNDBUF and SO_RCVBUF values to be used on the data socket.
            </action>
            <action issue="NET-496" dev="sebb" type="add">
            Util copyReader/copyStream classes should use default buffer size for non-positive buffer size parameters.
            </action>
            <action issue="NET-310" dev="sebb" type="add">
            FTPCommand conversion to use enum; added FTPCmd emum and deprecated FTPCommand.
            </action>
            <action issue="NET-480" dev="sebb" due-to="Peter Naber" type="fix">
            Wrong passivHost when using FTPHTTPClient with EPSV
            </action>
            <action issue="NET-494" dev="sebb" type="fix">
            FTPClient.CSL.cleanUp() fails to restore timeout value on exception
            </action>
            <action issue="NET-492" dev="sebb" due-to="Tomasz Jedrzejewski" type="fix">
            FTPClient.printWorkingDirectory() incorrectly parses certain valid PWD command results
            </action>
        </release>
        <release version="3.2" date="2012-12-03" description="
This release fixes bugs and adds some new functionality (see below).
 It is binary compatible with previous releases.
 Note that Clirr shows that two public methods have been removed (NET-485). These are not used within NET.
        ">
            <action issue="NET-46" dev="sebb" type="fix">
            retrieveFileStream fails randomly or hangs
            </action>
            <action issue="NET-485" dev="sebb" type="fix">
            Remove unnecessary Base64 methods.
            </action>
            <action issue="NET-482" dev="sebb" type="update" due-to="Houman Atashbar">
            Support XOAUTH.
            </action>
            <action issue="NET-484" dev="sebb" type="fix">
            Base64.CHUNK_SEPARATOR should be private
            </action>
            <action issue="NET-483" dev="sebb" type="fix">
            Base64.encodeBase64(byte[], boolean, boolean, int) does not calculate output size correctly for unchunked output.
            </action>
            <action issue="NET-466" dev="sebb" type="fix" due-to="Martin Oberhuber">
            Regression: TelnetInputStream#available() blocks.
            </action>
            <action issue="NET-426" dev="sebb" type="fix" due-to="Ketan">
            FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called.
            Implement _openDataConnection(String, String) method to properly
            interface with FTPClient.openDataConnection(String, String)
            </action>
            <action issue="NET-456" dev="sebb" type="fix">
            TelnetClient hangs when reader-thread startup is delayed.
            </action>
            <action issue="NET-449" dev="sebb" type="fix">
            listFiles bug with folder that begins with "-". Clarify Javadoc.
            </action>
            <action issue="NET-473" dev="sebb" type="fix">
            FTPClient setSoTimeout (int time) will result in NullPointerException. Clarify Javadoc.
            </action>
            <action issue="NET-468" dev="sebb" type="add" due-to="Bogdan Drozdowski">
            Request for native support for socks proxy routing with Commons net FTP.
            </action>
            <action issue="NET-475" dev="sebb" type="fix">
            FtpClient sends REST when calling listFiles. Clarified Javadoc.
            </action>
            <action issue="NET-465" dev="sebb" type="add" due-to="Bogdan Drozdowski">
            FTPClient setSendBufferSize and setReceiveBufferSize on data socket.
            </action>
            <action issue="NET-462" dev="sebb" type="add" due-to="Bogdan Drozdowski">
            FTPClient in PASSIVE_LOCAL_DATA_CONNECTION_MODE cannot work when host have several different IP.
            </action>
            <action issue="NET-467" dev="sebb" type="fix">
            IMAPClient#fetch() does not handle literal strings.
            </action>
            <action issue="NET-458" dev="sebb" type="fix" due-to="Denis Molony">
            MVSFTPEntryParser.parseSimpleEntry - ArrayIndexOutOfBoundsException.
            </action>
            <action issue="NET-450" dev="sebb" type="fix" due-to="Roger Hardiman">
            Bug in documentation for FTPClient.
            </action>
            <action dev="sebb" type="add">
            The examples can now be run using "java -jar commons-net-examples-m.n.jar".
            This will automatically include the main net jar in the classpath.
            See documentation.
            FTPClientExample now supports "-A" for anonymous login
            </action>
            <action issue="NET-442" dev="sebb" type="fix">
            StringIndexOutOfBoundsException: String index out of range: -1 if server respond with root is current directory.
            </action>
            <action issue="NET-444" dev="sebb" type="fix">
            FTPTimestampParserImpl fails to parse future dates correctly on Feb 28th in a leap year.
            </action>
        </release>
        <release version="3.1" date="Feb 20, 2012" description="
This release fixes a few bugs and adds some new functionality (see below).
  It is binary compatible with previous releases
        ">
            <action issue="NET-441" dev="sebb" type="fix" due-to="consiliens">
            [FTP] mlistDir doc should be "MLSD" not "MSLD".
            </action>
            <action issue="NET-440" dev="sebb" type="add">
            [FTP] Allow user to provide default value in case SYST command fails.
            </action>
            <action issue="NET-438" dev="sebb" type="fix" due-to="Norman Maurer">
            POP3Client.capa() should call POP3Client.getAdditionalReply()
            </action>
            <action issue="NET-412" dev="sebb" type="fix" due-to="Chuck Wolber">
            TFTP implementation subject to Sorcerer's Apprentice Syndrome
            </action>
            <action issue="NET-410" dev="sebb" type="fix" due-to="Chuck Wolber">
            TFTP does not handle RFC 783 retransmits
            </action>
            <action issue="NET-437" dev="sebb" type="fix" due-to="Gavin Camp">
            TelnetInputStream doesn't support non-blocking IO when reader thread is not enabled
            </action>
            <action issue="NET-346" dev="sebb" type="add" due-to="Kevin Samuel">
            FTP should support reporting NATed external IP address
            </action>
            <action issue="NET-433" dev="sebb" type="add">
            Commons NET site should link to the examples
            </action>
            <action issue="NET-422" dev="sebb" type="fix" due-to="Tomas Mysik / Magnus Johansson">
            FTP using HTTP proxy not working
            </action>
            <action issue="NET-423" dev="sebb" type="fix" due-to="Jens Koch">
            FTPClient.storeFIle might fail when ControlKeepAliveTimeout is set (ditto for FTPCLient.retrieveFile)
            </action>
            <action issue="NET-426" dev="sebb" type="add" due-to="Ketan">
            FTPS: Hook to customize _openDataConnection_ SSLSocket before startHandshake() is called
            </action>
            <action issue="NET-430" dev="sebb" type="fix" due-to="Thomas Mathis">
            Can't login to POP3S Server using explicit mode
            </action>
            <action issue="NET-434" dev="sebb" type="fix" due-to="zhangyong">
            FTPClient fails to close local listener socket when command socket channel encounter "ReadTimeoutException"
            </action>
            <action issue="NET-436" dev="sebb" type="add" due-to="Jürgen Jung">
            [FTP] Support for SYST "Mac OS" listing - "MACOS Peter's Server"
            </action>
            <action issue="NET-425" dev="sebb" type="update" due-to="Steven Jardine">
            [FTP] _openDataConnection_, __storeFile, and __storeFileStream should be protected and take String for FTP command.
            Likewise for receiveFile and receiveFileStream.
            </action>
            <action issue="NET-416" dev="sebb" type="update" due-to="Abhijeet Gaikwad">
            [Telnet] Increasing sub-negotiation message holder array size
            </action>
            <action issue="NET-428" dev="sebb" type="fix" due-to="sebb">
            SubnetUtils throws ArrayIndexOutOfBoundsException for new SubnetUtils( "1.2.3.4/32" ).getInfo().getAllAddresses()
            </action>
            <action issue="NET-421" dev="sebb" type="fix" due-to="Oliver Saggau">
            Problem connecting to TLS/SSL SMTP server using explicit mode.
            </action>
            <action issue="NET-415" dev="sebb" type="fix" due-to="george thomas">
            [Site] typo in migration how-to.
            </action>
        </release>

        <release version="3.0.1" date="June 6, 2011" description="
This is a bug-fix release.
        ">
            <action issue="NET-409" dev="sebb" type="fix">
            FTPClient truncates file (storeFile method).
            Fix bug introduced in release 3.0.
            </action>
        </release>
        <release version="3.0" date="May 16, 2011" description="
This release fixes many bugs (see below), and adds new functionality:
  - basic support for IMAP and IMAPS
  - support for SMTPS and POP3S

    FTP changes:
  - default for lenient future dates is now true, which fixes short date parsing where host clock is ahead of client clock
  - no longer parses every response line twice
  - OS auto-detection can be overriden by defining the property 'org.apache.commons.net.ftp.systemType';
  - or by creating a properties file '/systemType.properties' which provides a mapping from getSystemType() to parser name
  See the Javadoc for FTPClient.initiateListParsing(String parserKey, String pathname).
  - SASL, PLAIN and CRAM-MD5 authentication added
  - added control channel keep-alive for use with misbehaving routers, see FTPClient.setControlKeepAliveTimeout(long controlIdle)

    NNTP changes:
  - reworked to use long for article numbers
  - added streaming equivalents for the array methods

  Added TrustManagerUtils and KeyManagerUtils classes to simplify setting up trust and key namagers.
KeyManagerUtils can be used to provide client certificates.

  This release is binary-compatible with 2.2, but there are some minor changes to source compatibility:
  - telnet.TelnetClient#addOptionHandler(TelnetOptionHandler) now additionally throws IOException
  - telnet.TelnetClient#deleteOptionHandler() now additionally throws IOException
  - ftp.FTPSClient ctors no longer throw NoSuchAlgorithmException
  - Redundant CODE_nnn definitions have been removed from FTPReply, SMTPReply and NNTPReply classes
  - Unused String constants KEYSTORE_ALGORITHM, PROVIDER, STORE_TYPE, TRUSTSTORE_ALGORITHM removed from FTPSClient

  All users are recommended to upgrade.
">
            <action issue="NET-407" dev="sebb" type="update">
            Change lenientFutureDates to default to true.
            This means short dates will be parsed as the current year when the host clock is up to 1 day ahead of the client clock.
            </action>
            <action issue="NET-404" dev="sebb" type="fix">
            FTPSSocketFactory does not override createSocket(); causes java.net.SocketException: Unconnected sockets not implemented.
            </action>
            <action issue="NET-399" dev="sebb" type="fix" due-to="Noah Levitt">
            ftp data connection does not use connectTimeout.
            </action>
            <action issue="NET-400" dev="sebb" type="update" due-to="David Kocher">
            Option to override SSL negotiation. Make FTPSClient#execAuth() and FTPSClient#sslNegotiation() protected
            </action>
            <action issue="NET-402" dev="sebb" type="fix">
            IMAP, NNTP, POP3 and SMTP classes uses BufferedReader for control channel, which does not follow the standard.
            Changed reader to CRLFLineReader.
            </action>
            <action issue="NET-401" dev="sebb" type="fix">
            FTP class uses BufferedReader for control channel, which does not follow the standard.
            Changed reader to CRLFLineReader.
            </action>
            <action issue="NET-331" dev="sebb" type="update">
            AS400 file timestamp format is wrong. Workround exists.
            </action>
            <action issue="NET-269" dev="sebb" type="update">
            Remove semi-redundant check in SubnetUtils.calculate().
            </action>
            <action issue="NET-219" dev="sebb" type="update">
            Should Telnet class Exception blocks write to System.err?
            Catch blocks removed, and throws clauses added to allow caller to more easily detect and recover.
            </action>
            <action issue="NET-397" dev="sebb" type="update" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            FTPSClient does not handle AUTH or ADAT and only partially handles PBSZ. FTPSCommand should be deprecated.
            </action>
            <action issue="NET-268" dev="sebb" type="fix">
            Better handling of CIDR/31 and CIDR/32 where isInclusive = false.
            Return 0 for address count, and 0.0.0.0 for each of the addresses
            </action>
            <action issue="NET-395" dev="sebb" type="update">
            Move ProtocolCommandSupport to SocketClient.
            </action>
            <action issue="NET-393" dev="sebb" type="update">
            Should the sendCommandWithID() methods be public?
            Made methods private, and deleted currently unused ones.
            </action>
            <action issue="NET-394" dev="sebb" type="update">
            Are the sendUntaggedCommand() methods needed?
            Renamed the method as sendData(), as it's not a command.
            </action>
            <action issue="NET-392" dev="sebb" type="update">
            Use enum for IMAPCommand.
            </action>
            <action issue="NET-333" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            Added basic IMAP/IMAPS implementation.
            </action>
            <action issue="NET-389" dev="sebb" type="fix">
            Unix parser should ignore "total nnn" lines.
            </action>
            <action issue="NET-369" dev="sebb" type="remove">
            Article.addHeaderField() is currently write-only - there is no way to retrieve the headers - is it needed?
            Method was removed, along with the field.
            </action>
            <action issue="NET-367" dev="sebb" type="fix">
            ntp.TimeStamp uses incorrect lazy initialisation of static fields simpleFormatter and utcFormatter.
            </action>
            <action issue="NET-381" dev="sebb" type="update">
            Parsing is inefficient, as it parses everything twice.
            </action>
            <action issue="NET-388" dev="sebb" type="fix">
            VMSVersioningFTPEntryParser#preParse should not call super.preParse().
            </action>
            <action issue="NET-362" dev="sebb" type="fix">
            TelnetInputStream has various threading bugs.
            </action>
            <action issue="NET-89" dev="sebb" type="fix">
            TelnetClient use of FromNetASCIIInputStream and ToNetASCIIOutputStream breaks binary mode.
            See also NET-387.
            </action>
            <action issue="NET-385" dev="sebb" type="update">
            FTP does not apply timeout to initial responses.
            </action>
            <action issue="NET-384" dev="sebb" type="update">
            KeyManagerUtils - the KeyManager is not efficient.
            </action>
            <action issue="NET-383" dev="sebb" type="update">
            KeyManagerUtils - allow alias to be omitted when there is only one private key in the store
            </action>
            <action issue="NET-326" dev="sebb" type="add">
            A KeyManager is required when the protection level is set to 'P' with FTPSClient on active mode.
            Added KeyManagerUtils class to simplify provision of client certificates.
            </action>
            <action issue="NET-273" dev="sebb" type="add">
            FEAT response parsing. Added FTPClient methods: boolean hasFeature(feature [,option]),
            String fetaureValue(feature), String[] featureValues(feature)
            </action>
            <action issue="NET-379" dev="sebb" type="add">
            FTPClient - support for processing arbitrary commands that only use the control channel
            </action>
            <action issue="NET-378" dev="sebb" type="add">
            FTP listing should support MLST and MLSD.
            </action>
            <action issue="NET-377" dev="sebb" type="update">
            NLST does not take notice of HiddenFiles setting.
            </action>
            <action issue="NET-373" dev="sebb" type="update">
            NNTP Listgroups not working - broken server implementation.
            </action>
            <action issue="NET-375" dev="sebb" type="update">
            DotTerminatedMessageReader should extend BufferedReader, rather than Reader.
            </action>
            <action issue="NET-374" dev="sebb" type="update">
            ParserInitializationException doesn't use standard JDK exception chaining
            </action>
            <action issue="NET-372" dev="sebb" type="add">
            FTPSClient: java.security.cert.CertificateException: No X509TrustManager implementation available if trustManager == null
            </action>
            <action issue="NET-371" dev="sebb" type="add">
            Create TrustManagerFactory to provide custom TrustManagers.
            </action>
            <action issue="NET-354" dev="sebb" type="fix" due-to="Leif John Korshavn">
            FTPSClient not properly supporting CCC and PROT P.
            </action>
            <action issue="NET-368" dev="sebb" type="update">
            Threader.thread should accept an Iterable rather than a List.
            </action>
            <action issue="NET-327" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            "Unconnected sockets not implemented" when using FTPSClient
            Added disconnect() override which resets the socket factories to their defaults
            </action>
            <action issue="NET-350" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            "java.net.SocketException: Broken pipe" when calling "TelnetClient.sendAYT()"
            Added SocketClient#isAvailable() method to perform additional checks on a socket.
            </action>
            <action issue="NET-237" dev="sebb" type="add">
            Add streaming methods (corresponding to array methods) to NNTPClient.
            </action>
            <action issue="NET-365" dev="sebb" type="fix">
            FTPClient.listFiles() does not work properly, if remote server speaks German.
            Match non-space{3} instead of A-Za-z{3}
            </action>
            <action issue="NET-366" dev="sebb" type="fix">
            FTPClientConfig: setServerLanguageCode and setShortMonthNames do not work.
            Ensure that config is passed to all parsers that can use it.
            </action>
            <action issue="NET-276" dev="sebb" type="fix">
            NNTPClient has problems with group listings for large groups.
            </action>
            <action issue="NET-185" dev="sebb" type="fix">
            Possible NPE in Threader.java
            </action>
            <action issue="NET-364" dev="sebb" type="fix">
            nntp.Article is very inefficient and incorrect.
            </action>
            <action issue="NET-314" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            The FTP client should autodetect the control encoding.
            </action>
            <action issue="NET-363" dev="sebb" type="fix" due-to="daniel damon">
            Can't connect to a server behind firewall in passive mode.
            </action>
            <action issue="NET-348" dev="sebb" type="fix">
            Queue is full TelnetInputStream.
            </action>
            <action issue="NET-361" dev="sebb" type="add">
            Implement Telnet Command sender.
            </action>
            <action issue="NET-345" dev="sebb" type="fix" due-to="Archie Cobbs">
            Telnet client: not properly handling IAC bytes within subnegotiation messages:
            - failing to double IACs on output
            - failing to de-double IACs in input
            </action>
            <action issue="NET-343" dev="sebb" type="add" due-to="Archie Cobbs">
            Telnet client: Support Client-initiated Subnegotiation Messages.
            </action>
            <action issue="NET-344" dev="sebb" type="add" due-to="Archie Cobbs">
            Telnet client: Support Listener Notification of Incoming Data.
            </action>
            <action issue="NET-270" dev="sebb" type="fix">
            Incorrect error handling in method initiateListParsing of FTPClient.
            </action>
            <action issue="NET-352" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            SASL PLAIN and CRAM-MD5 authentication.
            </action>
            <action issue="NET-357" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            The POP3 client does not support SSL/TLS connections.
            </action>
            <action dev="sebb" type="remove">
            Removed deprecated unused fields from FTPSClient:
            - KEYSTORE_ALGORITHM, PROVIDER, STORE_TYPE, TRUSTSTORE_ALGORITHM
            </action>
            <action issue="NET-258" dev="sebb" type="fix">
            Implement A Keepalive Mechanism. Control channel keepalive implemented for the following methods:
            appendFile, storeFile, storeUniqueFile, retrieveFile.
            </action>
            <action issue="NET-289" dev="sebb" type="fix" due-to="Luc Claes">
            StackOverflowError in Threader.
            </action>
            <action issue="NET-317" dev="sebb" type="fix">
            POP3MessageInfo fields should be final.
            </action>
            <action issue="NET-252" dev="sebb" type="fix">
            Get rid of using deprecated API in VMSFTPEntryParser.
            </action>
            <action issue="NET-330" dev="sebb" type="remove">
            The method VMSFTPEntryParser.parseFileList(InputStream listStream) should not be present.
            </action>
            <action issue="NET-303" dev="sebb" type="fix">
            FTPFileEntryParser API samples are wrong.
            </action>
            <action issue="NET-229" dev="sebb" type="add">
            Use properties file (/systemType.properties) to handle new OS-type auto-detection.
            </action>
            <action issue="NET-332" dev="sebb" type="add">
            Commons net ftp cannot handle unknown type parser and should allow override of parser through vm argument.
            The system property "org.apache.commons.net.ftp.systemType" can be used to provide the system type.
            </action>
            <action issue="NET-286" dev="sebb" type="fix">
            Unhandled SecurityException in DefaultFTPFileEntryParserFactory.createFileEntryParser when using applets.
            </action>
            <action issue="NET-360" dev="sebb" type="fix">
            DefaultFTPFileEntryParserFactory.createFileEntryParser(String key) always tries to load a class.
            </action>
            <action issue="NET-156" dev="sebb" type="add">
            New FTPClient method to retrieve all directory names in the current working directory.
            Added methods listDirectories(), listDirectories(String path).
            </action>
            <action issue="NET-353" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            The SMTPClient does not support authentication.
            </action>
            <action issue="NET-356" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            The SMTP client does not support SSL/TLS connections.
            </action>
            <action issue="NET-358" dev="sebb" type="add">
            Implement copy Listener in FTPClient file operations.
            </action>
            <action issue="NET-359" dev="sebb" type="fix">
            CopyStreamAdapter unconditionally resets the CopyStreamEvent source and is inefficient.
            </action>
            <action issue="NET-355" dev="sebb" type="fix">
            examples.nntp.NNTPUtils does not compile
            </action>
            <action issue="NET-351" dev="sebb" type="add" due-to="Bogdan Drozdowski" due-to-email="bogdandr # op . pl">
            APOP authentication fails most of the time.
            Fix by adding leading 0 if necessary.
            </action>
        </release>
        <release version="2.2" date="Nov 22, 2010" description="
This is primarily a maintenance release, but it also includes new features and enhancements.

  Users of version 2.0 are encouraged to upgrade to 2.2, as this release includes some important bug fixes.

  See the detailed list of changes below for full description of all bug fixes and enhancements.

">
            <action issue="NET-334" dev="sebb" type="fix">
            FromNetASCIIInputStream can throw a NullPointerException
            </action>
            <action issue="NET-341" dev="sebb" type="fix">
            FTPClient.remoteAppend(String filename) uses STOR instead of APPE
            </action>
            <action issue="NET-339" dev="sebb" type="fix">
            Incorrect parsing of timestamp on Windows CE
            Fix parsing to allow for new-style DOS listing using 24hr clock rather than AM/PM
            </action>
            <action issue="NET-338" dev="sebb" type="add">
            ftp.FTPClient.initiateListParsing(String parserKey, String pathname)
            can call createFileEntryParser with null systemName.
            Fix this by adding getSystemType() which does not return null, and deprecating getSystemName().
            </action>
            <action issue="NET-244" dev="sebb" type="add">
            Add support for FTPFileFilter filters. New classes FTPFileFilter, FTPFileFilters, new methods:
            FTPListParseEngine#getFiles(FTPFileFilter filter)
            FTPClient.listFiles(String pathname, FTPFileFilter filter)
            </action>
            <action issue="NET-313" dev="sebb" type="fix">
            Optionally enable EPSV with IPv4; Only send EPRT with IPv6.
            Fix incorrect port used with EPRT. Allow activeMaxPort == activeMinPort in getActivePort() method.
            </action>
            <action issue="NET-328" dev="sebb" type="fix">
            FromNetASCIIInputStream.read(byte[], int, int) may change length passed to superclass if not doing conversion
            </action>
            <action issue="NET-74" dev="sebb" type="add">
            Testcase to show WindowSizeOptionHandler is working OK
            </action>
            <action issue="NET-330" dev="sebb" type="fix">
            The method VMSFTPEntryParser.parseFileList(InputStream listStream) should not be present.
            Partial fix - marked method as deprecated and to be removed
            </action>
            <action issue="NET-180" dev="sebb" type="fix">
            Telnet EOR is "consumed" by TelnetInputStream when in BINARY transmission.
            Send notification to TelnetNotificationHandler.
            </action>
            <action issue="NET-329" dev="sebb" type="fix">
                TelnetInoutStream#__read() bug in the __receiveState handling for the _STATE_IAC state.
            </action>
            <action issue="NET-283" dev="sebb" type="fix">
                SocketClient should ensure input and output streams are closed
            </action>
            <action issue="NET-302" dev="sebb" type="fix">
                FTP: initiateListParsing should not cache entryParser
            </action>
            <action issue="NET-282" dev="rwinston" type="fix">
                Improvement to isInRange method in SubnetUtil.SubnetInfo class
            </action>
            <action issue="NET-266" dev="rwinston" type="fix">
                FTPClient.listFiles() corrupts file name in certain circumstances
            </action>
            <action issue="NET-264" dev="sebb" type="fix">
                Telnet spyStream NullPointerException
            </action>
            <action dev="sebb" type="update">
                Deprecated the following unused fields from org.apache.commons.net.ftp.FTPSClient:
                KEYSTORE_ALGORITHM, PROVIDER, STORE_TYPE, TRUSTSTORE_ALGORITHM
            </action>
            <action dev="niallp" type="fix">
                Fix site reports
            </action>
            <action issue="NET-285" dev="rwinston" type="fix">
                Add support for setting external host ip/port range
            </action>
            <action issue="NET-290" dev="rwinston" type="fix">
                Add fix and testcase for DotTerminatedMessageReader
            </action>
            <action issue="NET-288" dev="rwinston" type="fix">
                Add support for IPv6 EPRT/EPSV
            </action>
            <action issue="NET-305" dev="rwinston" type="fix">
                Fix SubnetUtils for /32 subnets and add inclusive host count flag
            </action>
            <action issue="NET-300" dev="rwinston" type="fix">
                Fix NPE when listHiddenFiles was on
            </action>
            <action issue="NET-215" dev="rwinston" type="fix">
                UNIXFTPEntryParser didn't preserve trailing whitespace in files
            </action>
            <action issue="NET-236" dev="rwinston" type="fix">
                method SubnetUtils.SubnetInfo.isInRange(addr) returns incorrect result
            </action>
            <action issue="NET-242" dev="rwinston" type="fix">
                Method createServerSocket of FTPSSocketFactory never called and thus UseClientMode is incorrect in a secured ftp transfer using active mode.
            </action>
            <action issue="NET-248" dev="rwinston" type="fix">
                Fix inconsistent command list in FTPCommand
            </action>
            <action issue="NET-250" dev="rwinston" type="fix">
                DefaultFTPFileEntryParserFactory did not work with Netware FTP server returning "NETWARE TYPE: L8"
            </action>
            <action issue="NET-257" dev="rwinston" type="fix">
                FTP.getReplyStrings() returned array of null Strings
            </action>
            <action issue="NET-259" dev="rwinston" type="fix">
                UnixFTPEntryParser regex did not match some directory entries
            </action>
            <action issue="NET-260" dev="rwinston" type="fix">
                SubnetUtils.SubnetInfo.isInRange(...) returned incorrect values
            </action>
            <action issue="NET-261" dev="rwinston" type="update">
                SubnetUtils.SubnetInfo.isInRange(...) behaviour not documented
            </action>
            <action issue="NET-262" dev="rwinston" type="fix">
                SubnetUtils did not handle /31 and /32 CIDRs well
            </action>
            <action issue="NET-265" dev="rwinston" type="fix">
                UnixFTPEntryParser failed to parse entry in certain conditions
            </action>
            <action issue="NET-266" dev="rwinston" type="fix">
                FTPClient.listFiles() corrupted file name in certain circumstances
            </action>
            <action issue="NET-251" dev="rwinston" type="update">
                Moved class "ThreadContainer" from Threader.java into its own source file
            </action>
            <action issue="NET-256" dev="rwinston" type="fix">
                FTPSClient should accept a pre-configured SSLContext
            </action>
            <action issue="NET-263" dev="rwinston" type="add">
                SubnetUtils / SubNetInfo toString() implementations
            </action>
            <action dev="rwinston" type="fix">
                Improve NNTPClient handling of invalid articles
            </action>
            <action dev="rwinston" type="update">
                Refactor examples package.
            </action>
            <action dev="sebb" type="add">
                Javadoc fixes, improvements, and refactoring.
            </action>
            <action issue="NET-245" dev="rwinston" type="fix">
                Apply MFMT patch
            </action>
            <action issue="NET-279" dev="rwinston" type="fix">
                Fix copying of reply lines collection
            </action>
            <action issue="NET-277" dev="rwinston" type="fix">
                Fix incorrect NNTP constant
            </action>
            <action issue="NET-274" dev="rwinston" type="fix">
                Restore socket state after CCC command
            </action>
            <action issue="NET-275" dev="rwinston" type="fix">
                Example code in FTPClient doesn't compile
            </action>
            <action dev="rwinston" type="fix">
                Fix inconsistent handling of socket read/write buffer size
            </action>
            <action issue="NET-294" dev="sebb" type="fix">
                UnixFTPEntryParser fails to parse some entries
            </action>
        </release>

        <release version="2.1" description="Not released"/>

        <release version="2.0" date="October 20, 2008" description="Java 5.0 release">
            <action dev="rwinston" type="fix" issue="NET-307">
                One of the "connect" method in class org.apache.commons.net.SocketClient doesn't handle connection timeout properly
            </action>
            <action dev="rwinston" type="update">
                Add null check in TelnetClient::disconnect().
            </action>
            <action dev="rwinston" type="remove">
                Remove deprecated FTPFileIterator and FTPFileList classes.
            </action>
            <action dev="rwinston" type="add">
                Add connection timeout functionality to SocketClient.
            </action>
            <action dev="rwinston" type="update">
                Make the KeyManager and TrustManager settable (niklas@protocol7.com).
            </action>
            <action dev="rwinston" type="update">
                Patch FTPSClient to set default SSLServerSocketFactory. Thanks niklas@protocol7.com
            </action>
            <action dev="rwinston" type="fix" issue="NET-68">
                Patch to prevent TFTPClient dropping last packet. Thanks palm@poplarware.com
            </action>
            <action dev="rwinston" type="update">
                Change isConnected() method to delegate to underlying socket connection.
            </action>
            <action dev="rwinston" type="add">
                FTPS (TLS and SSL) is now supported. Thanks to Jose Juan Montiel, Paul Ferraro, and Satoshi Ishigami.
            </action>
            <action dev="rwinston" type="update">
                Commons::Net now uses Maven 2. The project.xml has been replaced with a pom.xml, and the source tree layout
                has been changed accordingly.
            </action>
            <action dev="rwinston" type="remove">
                Removed old ftp2 proposal directories.
            </action>
            <action dev="rwinston" type="update">
                Commons::Net now uses JDK regex functionality, saving on an extra [oro] dependency. There are now
                no external dependencies required.
            </action>
            <action dev="rwinston" type="fix">
                Various syntactic issues (FindBugs issues, JDK 5.0 generics support)
            </action>
            <action dev="dfs" type="fix">
                Applied Rob Hasselbaum's
                rhasselbaum -> alumni.ithaca.edu
                patch for PR 38688 fixing a
                TelnetInputStream hang.
            </action>
            <action dev="dfs" type="update">
                Exposed control connection of FTP
                class via _controlInput_ and _controlOutput_
                protected member variables in response
                to PR 38309 reported by
                josejuan.montiel@gmail.com.
            </action>
            <action dev="dfs" type="fix">
                Reverted PR 32859 patch to TFTPClient
                because it caused final packets to not
                be sent.
            </action>
            <action dev="rwinston" type="update" issue="NET-36">
                Make FTPClient extend SocketClient instead of TelnetClient. From jhindsley@providerlink.com
            </action>
            <action dev="rwinston" type="fix" issue="NET-39">
                Adds an "e" symbolic link flag to the Unix FTP parser. From denisgaebler@netscape.net
            </action>
            <action dev="rwinston" type="fix" issue="NET-119">
                Allow hidden files to be listed. Thanks to mario@ops.co.at
            </action>
            <action dev="rwinston" type="update">
                Remove reflective check for Socket::isConnected() (no longer needed)
            </action>
            <action dev="rwinston" type="add" issue="NET-136">
                Added WindowSizeOptionHandler for TelnetClient. Thanks to yuvalkashtan@gmail.com
            </action>
            <action dev="rwinston" type="update">
                Refactored *Client classes under net/ package into separate subpackages, and move PrintCommandListener
                out of the examples/ package.
            </action>
            <action dev="rwinston" type="add">
                Added an ant target to the Maven build to generate an FTP-only jar file, for clients who
                wish to use only FTP-based functionality.
            </action>
            <action dev="rwinston" type="update">
                Custom SocketFactory interface has been replaced with the JDK SocketFactory implementation. Added
                ServerSocketFactory instance to SocketClient.
            </action>
            <action dev="rwinston" type="update">
                Removed redundant FTP.IMAGE_FILE_TYPE flag.
            </action>
            <action dev="rwinston" type="update">
                Added heavily updated MVSFTPEntryParser from henrik.sorensen@balcab.ch
            </action>
            <action dev="rwinston" type="remove">
                Removed deprecated classes FTPFileListParser, FTPFileListParserImpl, and DefaultFTPFileListParser. Also
                removed associated deprecated methods from FTPClient.
            </action>
            <action dev="rwinston" type="fix" issue="NET-164">
                Added encoding to FingerClient. From Ulrich Mayring.
            </action>
            <action dev="rwinston" type="fix" issue="NET-24">
                Catch BindException in RCommandClient::connect().
            </action>
            <action dev="rwinston" type="fix" issue="NET-178">
                Add encoding specifier to SMTPClient.
            </action>
            <action dev="rwinston" type="add">
                Add setters for socket send/receive buffer size to SocketClient.
            </action>
            <action dev="rwinston" type="fix" issue="NET-177">
                Fix PASV specifiers that broke previously. From Chris Eagle.
            </action>
            <action dev="rwinston" type="fix" issue="NET-182">
                Catch NPE in FTP parser factory method.
            </action>
            <action dev="rwinston" type="fix" issue="NET-172">
                Don't bind a UDP socket to NTP protocol port.
            </action>
            <action dev="rwinston" type="fix">
                Better handling of user and group names with embedded spaces in FTP listings.
            </action>
            <action dev="rwinston" type="fix" issue="NET-173">
                Add configurable multiline parsing.
            </action>
            <action dev="rwinston" type="fix" issue="NET-188">
                Add fix for broken leap year date parsing.
            </action>
            <action dev="rwinston" type="add">
                Add SubnetUtils class (suggested by Kenny McLeod)
            </action>
            <action dev="rwinston" type="fix" issue="NET-169">
                Add Unix-type handling for UNKNOWN Type: L8 syst() message systems.
            </action>
            <action dev="rwinston" type="fix" issue="NET-198">
                Allow FTPTimestampParserImpl to take a predefined Calendar instance representing current time.
            </action>
            <action dev="sebb" type="fix" issue="NET-194">
                Replace Exception with IOException
            </action>
            <action dev="sebb" type="update" issue="NET-214">
                VMS file permission parsing
            </action>
            <action dev="sebb" type="fix" issue="NET-208">
                TelnetInputStream swallows interruptedexception as IOException
            </action>
            <action dev="sebb" type="fix" issue="NET-223">
                the data connection socket is not closed when an IOException occurred
            </action>
            <action dev="sebb" type="fix" issue="NET-230">
                ParserInitializationException when connecting to a Unix FTP server: comparison string must be upper case
            </action>
            <action dev="sebb" type="fix" issue="NET-225">
                FTPFileEntryParserImpl.preParse() doesn't remove unparsable entries at the end of the file list
            </action>
        </release>


<!-- 1.5.0 has not yet been released, so comment out the section until it is ready for release -->
<!--
        <release version="1.5.0" date="" description="">
            <action dev="dfs" type="fix" issue="NET-3">
                TelnetInputStream.java: Applied Rob
                Hasselbaum's
                rhasselbaum@alumni.ithaca.edu
                patch for PR 38688 fixing a
                TelnetInputStream hang.
            </action>
            <action dev="rwinston" type="fix"
                issue="NET-73">
                TelnetInputStream.java: Fixing another
                potential deadlock for
                telnet and FTP (patch courtesy Rob Hasselbaum).
            </action>
            <action dev="dfs" type="update" issue="NET-57">
                FTP.java: Exposed control connection of
                FTP
                class via _controlInput_ and
                _controlOutput_
                protected member variables in response
                to PR 38309 reported by
                josejuan.montiel@gmail.com.
            </action>
            <action dev="rwinston" type="fix"
                issue="NET-68">
                TFTPClient.java: Fix bug causing final
                packets
                to not be sent.
            </action>
            <action dev="rwinston" type="fix"
                issue="NET-161">
                TFTPClient.java: Fix sendFile() (related
                to NET-68).
            </action>
            <action dev="rwinston" type="fix"
                issue="NET-181">
                TFTPClient.java: block number
                wraparound.
            </action>
            <action dev="scohen" type="fix" issue="NET-16">
                UNIXFTPEntryParser.java: support for
                group names with
                spaces (patch courtesy D. Kilzer).
            </action>
            <action dev="scohen" type="fix" issue="NET-62">
                DefaultFTPFileEntryParserFactory.java:
                Wrap
                NoClassDefFoundError in FTP parser exception
                when ORO is not available.
            </action>
            <action dev="rwinston" type="add"
                issue="NET-33">
                FTPClient.java: Fix closing FTP
                ServerSocket after timeout
            </action>
            <action dev="rwinston" type="add">
                FTPClientConfig.java: Added an FTP
                parser for Netware FTP servers.
                Tested on Novell Netware 6.5.
            </action>
            <action dev="rwinston" type="fix"
                issue="NET-188">
                FTPTimestampParserImpl.java: Fix leap
                year date parsing bug.
            </action>
            <action dev="rwinston" type="fix">
                Article.java: Fix minor issues with NNTP
                parsing.
            </action>
        </release>
-->


        <release version="1.4.1" date="December 3, 2005" description="fix release to restore jdk 1.3 compatability">
            <action dev="scohen" type="fix">
                Applied patches for defect 37113. Code incompatible with jdk 1.3. Original patch submitted by Andrea Rombald
            </action>
            <action dev="scohen" type="fix">
                Applied patches for defect 37522. updated project.xml to correct compatibility level.
            </action>
        </release>

        <release version="1.4.0" date="May 7, 2005" description="Some additions and enhancements">
            <action dev="dfs" type="fix">
                Fixed typo in method name.
                FTP.removeCommandListener() was missing
                the L.  Problem reported by
                Per.Lindberger@linkon.se.
            </action>
            <action dev="rwinston" type="fix">
                Applied fix for PR 33942 and PR 31793. Original patch submitted by mario@ops.co.at
            </action>
            <action dev="rwinston" type="fix">
                TFTPClient was ignoring final ACK (PR 32859). Thanks to perttu.auramo@ekahau.com
            </action>
            <action dev="rwinston" type="fix">
                Applied fix for ACL parsing in the FTP client (PR 33972). Submitted by robertalasch@yahoo.com
            </action>
            <action dev="rwinston" type="fix">
                Added missing NTP/SNTP unit tests to the codebase.
            </action>
            <action dev="dfs" type="fix">
                Applied fix for POP3Client returning empty reply strings (PR 34133). Thanks to sammy_c@lineone.net
            </action>
            <action dev="rwinston" type="fix">
                NTP port parameter was being ignored (PR 34219). Fixed by felix.eichhorn@3soft.de
            </action>
            <action dev="scohen" type="add">
                An FTP parser for MVS was added. Submitted by wnoto@openfinance.com
            </action>
            <action dev="scohen" type="add">
                Added functionality for extensible parsing of FTP responses, using a configurable format string. This should enable the FTP client to operate across many different locales and date formats.
            </action>
        </release>

        <release version="1.3.0" date="December 15, 2004" description="many fixes and enhancements">
            <action dev="rwinston" type="fix">
                Applied patch for PR 31793. Thanks to mario@ops.co.at
            </action>
            <action dev="rwinston" type="add">
                Added message threading functionality to the NNTP client.
            </action>
            <action dev="rwinston" type="update">
                Added return code 521 to FTPReply.java - this should obviate the need for the Ant FTP task to manually declare it.
            </action>
            <action dev="rwinston" type="fix">
                Add explicit notify() in TelnetInputStream::read(), so available() returns an accurate value. Thanks to tpalkot@gmail.com.
            </action>
            <action dev="rwinston" type="add">
                Added SNTP/NTP components into the Commons-Net codebase, courtesy of
                Jason Matthews.
            </action>
            <action dev="rwinston" type="add">
                Added POP3 test suite, courtesy of Mike George mike.george@comcast.net.
            </action>
            <action dev="scohen" type="fix">
                Applied fix for FTPClient returning null for certain timestamp formats (BUG #30737)
            </action>
            <action dev="rwinston" type="fix">
                Build.xml fixes - dont include example classes in redistributable
                .jar, remove test dependency from javadoc target, and exclude private members from generated javadoc.
            </action>
            <action dev="rwinston" type="fix">
                Fixed bug in TFTPClient::setMaxTimeout(), spotted by steve@widge.net
            </action>
            <action dev="dfs" type="fix">
                Some changes to facilitate compilation under JDK 5.0
            </action>
            <action dev="rwinston" type="fix">
                Return correct NNTP article count when high and low watermarks are 0.
                Spotted by jmordax@terra.es
            </action>
            <action dev="rwinston" type="fix">
                Remove trailing null byte in TFTP packets. Thanks to gerard.dens@alcatel.be
            </action>
            <action dev="dfs" type="fix">
                Many javadoc fixes.
            </action>
            <action dev="rwinston" type="update">
                Allow FTPClient to set transfer buffer size.
            </action>
            <action dev="rwinston" type="update">
                Ensure consistent handling of encoding throughout FTPClient
                operations. Patch submitted by leif@tanukisoftware.com.
            </action>
            <action dev="dfs" type="fix">
                Fix TelnetClient zombie thread issue
            </action>


        </release>
        <release version="1.3.0-dev" date="July 28, 2004"
            description="regression fix">
            <action dev="dfs" type="fix">
                Fixed regression from migration to new parsers.  Most of the
                new parsers parsed the file size as an integer instead of a
                long.  Changed all of them to set the size to long.  This
                problem was detected by the reporter of:
                http://issues.apache.org/bugzilla/show_bug.cgi?id=30345
            </action>
        </release>
        <release version="1.2.2" date="June 25, 2004" description="fix release">
            <action dev="scohen" type="fix">
                fixed bug in the way FTPClient.listFiles worked when a directory was not
                specified.  Current directory was not being 'remembered'.  This was most
                problematic in the dependent ftp task of Ant.
            </action>
            <action dev="scohen" type="fix">
                fixed handling of certain unusual "special" file types in the Unix parser.
            </action>
        </release>

        <release version="1.2.1" date="May 6, 2004" description="fix release">
            <action dev="scohen" type="fix">
                changed code that rendered package uncompilable under JDK 1.2
            </action>
        </release>

        <release version="1.2.0" date="April 30, 2004" description="autodetection of system for listings">
            <action dev="scohen" type="fix">
                Mario Ivankovits mario@ops.co.at added
                functionality supporting correct handling of the &quot;dirstyle&quot;
                attribute of NT and OS400 servers that allows them to mimic Unix ftp servers.
                and a bug fix affecting handling of sticky and suid bits on Unix FTP servers.
            </action>
            <action dev="scohen" type="add">
                Mario Ivankovits mario@ops.co.at added parser for OS400.
            </action>
            <action dev="jbrekke,scohen" type="fix">
                Added a functional junit test testing list parsing against real servers
                and fix several    bugs found through this test.
            </action>
            <action dev="dfs" type="add">
                Ted Wise ctwise@bellsouth.net provided a
                patch to add the XHDR extended NNTP command.
            </action>
            <action dev="scohen,dfs" type="update">
                Deprecated FTPFileListParser interface, DefaultFTPFileListParser
                class, and the FTPClient.listFiles methods that accepted an
                FTPFileListParser parameter.  These deprecated classes and methods
                will be removed in version 2.0.
            </action>
            <action dev="scohen" type="add">
                Added org.apache.commons.net.parser.FTPFileEntryParserFactory
                interface and a default implementation:
                DefaultFTPFileEntryParserFactory.  This addition facilitates the
                autodetection of which FTPFileEntryParser to use to generate
                listings.  FTPClient.listFiles methods were added that implement
                autodetection.
            </action>
        </release>

<!-- Not yet released; probably never will be
        <release version="1.1.1" date="TBD" description="last jdk1.1 compatible release">
            <action dev="scohen" type="fix">
                Removed all JDK 1.1 incompatibilities that had been introduced
                unintentionally in previous versions.  Release 1.1.1 is the last
                JDK 1.1 compatible release.  Any future 1.1.x maintenance releases
                will remain JDK !.1 compatible, but version 1.2 may break
                compatibility and will be guaranteed to work with only J2SE 1.2
                and later.
            </action>
        </release>
 -->
        <release version="1.1.0" date="October 23, 2003" description="many enhancements and bug fixes">
            <action dev="dfs" type="add">
                Rory Winston Rory.Winston@telewest.co.uk provided
                patches to add the following extended NNTP commands to
                NNTPClient: XOVER, AUTHINFO USER, AUTHINFO PASS, and
                LIST ACTIVE.
            </action>
            <action dev="dfs" type="fix">
                Changed connection hooks for FTP, SMTP, POP3, and NNTP classes
                to force use of an 8-bit US-ASCII superset (ISO-8859-1) for
                protocol communication.  This was necessary because
                InputStreamReader and OutputStreamWriter use the default
                client-side character set encoding.  fasselin@ca.ibm.com
                reported failure of SMTP on OS/390 which has EBCDIC as the
                native character set.
            </action>

            <action dev="dfs" type="fix">
                Applied variation of fix suggested by Matthieu Recouly
                matthieu.recouly@laposte.net so that
                UnixFTPEntryParser may handle listings of the form:
                    "drwxr-xr-x 1 usernameftp 512 Jan 29 23:32 prog"
                where the space between user name and group is omitted.
            </action>
            <action dev="dfs" type="fix">
                Applied patch from Stephane Este-Gracias
                sestegra@free.fr that fixes the parsing of
                VMS listings by VMSFTPEntryParser..
            </action>
            <action dev="brekke" type="fix">
                If the buffer queue run full, the run() method sometimes hangs forever.
                Changed wait() to wait(100) as with other changes in TelnetInputStream.
                Fix submitted From: J. Matysiak ( j.matysiak@cenit.de ).
            </action>
            <action dev="brekke" type="fix">
                FTP.smnt(String dir) was not passing on the dir to the SMNT command as an argument.
            </action>
            <action dev="brekke" type="add">
                Added a link to the FAQ currently hosted on the Apache Wiki.
            </action>
            <action dev="dfs" type="update">
                Changed package private NNTP._reader and NNTP._writer member
                variables to protected NNTP._reader_ and NNTP._writer_
                variables as suggested by issue report 16995 to facilitate
                extending NNTPClient functionality in subclasses.
            </action>
            <action dev="dfs" type="update">
                Changed name of FTPClient.__openDataConnection() to
                FTPClient._openDataConnection_() to remain consistent
                with the convention in the code that protected members
                are of the form _foo_.  At some point __openDataConnection()
                had been changed from private to protected.
            </action>
            <action dev="brekke" type="add">
                Added terminal option support to the telnet client with tests.
                From Bruno D'Avanzo ( b.davanzo@inwind.it ).
            </action>
            <action dev="scohen" type="add">
                New parsers merged with mainline with support for old list parsers.
            </action>
        </release>

        <release version="1.0.0" date="February 23, 2003" description="first jakarta-commons release">
            <action dev="brekke" type="add">
                Added a migration document for moving from NetComponents to Commons/Net.
            </action>
            <action dev="brekke" type="fix">
                Moved the ftp2 tree with tests to a proposal directory and setup
                a build for that code.  This can grow in this area so users don't
                think it is production ready.
            </action>
            <action dev="dfs" type="fix">
                Cleaned up license header on some source.
            </action>
            <action dev="dfs" type="fix">
                Moved .io and .util to .net.io and .net.util in preparation for
                1.0 release.
            </action>
            <action dev="dfs" type="fix">
                Fixed typo in NNTP.removeProtocolCommandListener() method name.  It
                was missing an L.  From: joev@atg.com.
            </action>
            <action dev="brekke" type="add">
                Various site updates including this changes doc and publish
                date information.
            </action>
            <action dev="dfs" type="fix">
                Patch for restarting FTP file transfers.  The offset was not
                being sent immediately before the data transfer command on
                account.  The bug was apparently introduced in NetComponents
                when it was decided to always send a PORT command before each data
                transfer to avoid socket reuse problems on Windows.
                From: Tapan Karecha ( tapan@india.hp.com ).
            </action>
            <action dev="dfs" type="fix">
                Applied a fix for potential deadlock in TelnetInputStream by
                changing a wait() to a wait(100).
                From: Tapan Karecha ( tapan@india.hp.com ).
            </action>
            <action dev="dfs" type="update">
                FTP examples now use passive ftp connections.
            </action>
        </release>
    </body>
</document>
