<?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.7" date="TBA" descriptioon="
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
        
">
            <action issue="NET-633" type="update" dev="sebb" due-to="n0rm1e">
            Add XOAUTH2 to IMAP and SMTP
            </action>
            <action issue="NET-632" type="update" dev="sebb" due-to="prakapenka">
            FTPHTTPClient - support for encoding other than UTF-8
            </action>
            <action issue="NET-631" type="fix" dev="sebb">
            Bug in MVSFTPEntryParser.parseUnixList (FindBugs)
            </action>
            <action issue="NET-584" type="fix" dev="sebb" due-to="Kazantsev Andrey Sergeevich/Nick Manley">
            Error when using org.apache.commons.net.ftp.FTPClient setControlKeepAliveTimeout
            </action>
            <action issue="NET-626" type="update" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetUtils#SubnetUtils - improved comment
            </action>
            <action issue="NET-625" type="update" dev="sebb">
            SubnetUtils - improve construction
            </action>
            <action issue="NET-624" type="update" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetInfo#getCidrSignature - improve functions
            </action>
            <action issue="NET-624" type="fix" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetInfo#toCidrNotation: A wrong format subnet mask is allowed
            </action>
            <action issue="NET-623" type="fix" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetUtils - fixed spelling errors
            </action>
            <action issue="NET-621" type="update" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetUtils#SubnetInfo - remove unnecessary accessors
            </action>
            <action issue="NET-619" type="update" dev="sebb" due-to="Makoto Sakaguchi">
            SubnetUtils - improve binary netmask algorithm
            </action>
            <action issue="NET-613" type="fix" dev="sebb" due-to="Donald Kwakkel">
            System Information Leak in ftp parser
            </action>
        </release>
        <release version="3.6" date="2017-02-15" 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.

* TFTPClient code has been rewritten to improve error handling and retries.
  
">
            <action issue="NET-613" type="fix" dev="sebb">
            TFTPClient assumes that lastBlock == 0 only once
            </action>
            <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 and 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="Joerg 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>
