<?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>Apache Commons Net Release Notes</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="2020-08-05" description="
This is mainly a bug-fix release. See further details below.

 This release requires a minimum of Java 7.

 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

 Note that the examples packages were moved under org/apache/commons/net/examples.
 The examples are not part of the public API, so this does not affect compatibility.

">
            <action issue="NET-673" type="fix" dev="sebb">
            IMAPClient.APPEND does not always calculate the correct length
            </action>
            <action issue="NET-646" type="add" dev="sebb">
            ALLO FTP Command for files >2GB
            </action>
            <action issue="NET-615" type="add" dev="sebb">
            IMAPClient could simplify using empty arguments
            </action>
            <action issue="NET-614" type="add" dev="sebb">
            IMAP fails to quote/encode mailbox names
            </action>
            <action issue="NET-643" type="fix" dev="sebb" due-to="Vasily">
            NPE when closing telnet stream
            </action>
            <action issue="NET-648" type="add" dev="pschumacher">
            Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility
            </action>
            <action issue="NET-641" type="fix" dev="sebb" due-to="pin_ptr">
            SubnetUtils.SubnetInfo.isInRange("0.0.0.0") returns true for CIDR/31, 32
            </action>
            <action issue="NET-638" type="add" dev="sebb" due-to="Daniel Leong">
            Telnet subnegotiations hard-limited to 512 bytes - allow override
            </action>
            <action issue="NET-639" type="fix" dev="sebb" due-to=" Alexander Eller">
            MVSFTPEntryParser.preParse - MVS, z/OS - allow for merged Ext/Used fields
            </action>
            <action issue="NET-636" type="fix" dev="sebb">
            examples should be in org.apache.commons.net subpackage
            </action>
            <action issue="NET-634" type="add" dev="sebb" due-to="Mauro Molinari">
            Add SIZE command support
            </action>
            <action type="add" dev="sebb">
            Add POP3ExportMbox example code
            </action>
            <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>
            <action issue="NET-678" type="update" dev="sebb" due-to="Roman Grigoriadi">
            VMS ftp LIST parsing results in empty file list
            </action>
            <action issue="NET-674" type="add" dev="sebb" due-to="Chris Steingen">
            FTPListParseEngine should support listing via MLSD
            </action>
            <action issue="NET-663" type="fix" dev="sebb" due-to="Max Shenfield">
            NullPointerException when FTPClient remote verification fails
            </action>
            <action issue="NET-649" type="fix" dev="sebb" due-to="Filipe Bojikian Rissi">
            227 Entering Passive Mode
            </action>
            <action issue="NET-660" type="add" dev="sebb" due-to="Nagabhushan S N">
            Next and Previous IP Address in SubnetUtils.SubnetInfo
            </action>
            <action issue="NET-682" type="fix" dev="sebb" due-to="richard">
            MVSFTPEntryParser doesn't support Record Formats of U
            </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(...) behavior 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:
                https://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>
