You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/05/31 20:38:19 UTC

[commons-net] branch master updated: Bump actions/cache from 3.0.2 to 3.0.3

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-net.git


The following commit(s) were added to refs/heads/master by this push:
     new a8a756f3 Bump actions/cache from 3.0.2 to 3.0.3
a8a756f3 is described below

commit a8a756f3dfa0c05b1c42d8daab87853c5a4f216e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Tue May 31 16:38:14 2022 -0400

    Bump actions/cache from 3.0.2 to 3.0.3
---
 .github/workflows/maven.yml |  112 +-
 src/changes/changes.xml     | 3322 +++++++++++++++++++++----------------------
 2 files changed, 1717 insertions(+), 1717 deletions(-)

diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 268db1d9..81b03ecf 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -1,56 +1,56 @@
-# 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.
-
-name: Java CI
-
-on: [push, pull_request, workflow_dispatch]
-
-jobs:
-  build:
-    timeout-minutes: 5
-    continue-on-error: ${{ matrix.experimental }}
-    strategy:
-      matrix:
-        java: [ 8, 11, 17 ]
-        os: [ubuntu-latest]
-        experimental: [false]
-        # Don't need 
-        include:
-          - java: 8
-            os: macos-latest
-            experimental: false
-          - java: 8
-            os: windows-latest
-            experimental: false
-#        include:
-#          - java: 18-ea
-#            experimental: true        
-
-    runs-on: ${{ matrix.os }}
-    steps:
-    - uses: actions/checkout@v3
-    - uses: actions/cache@v3.0.2
-      with:
-        path: ~/.m2/repository
-        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-        restore-keys: |
-          ${{ runner.os }}-maven-
-    - name: Set up JDK ${{ matrix.java }}
-      uses: actions/setup-java@v3
-      with:
-        distribution: 'temurin'
-        java-version: ${{ matrix.java }}
-    - name: Build with Maven
-      run: mvn -V --batch-mode -Ddoclint=all --file pom.xml --no-transfer-progress -Pslf4j-simple
+# 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.
+
+name: Java CI
+
+on: [push, pull_request, workflow_dispatch]
+
+jobs:
+  build:
+    timeout-minutes: 5
+    continue-on-error: ${{ matrix.experimental }}
+    strategy:
+      matrix:
+        java: [ 8, 11, 17 ]
+        os: [ubuntu-latest]
+        experimental: [false]
+        # Don't need 
+        include:
+          - java: 8
+            os: macos-latest
+            experimental: false
+          - java: 8
+            os: windows-latest
+            experimental: false
+#        include:
+#          - java: 18-ea
+#            experimental: true        
+
+    runs-on: ${{ matrix.os }}
+    steps:
+    - uses: actions/checkout@v3
+    - uses: actions/cache@v3.0.3
+      with:
+        path: ~/.m2/repository
+        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+        restore-keys: |
+          ${{ runner.os }}-maven-
+    - name: Set up JDK ${{ matrix.java }}
+      uses: actions/setup-java@v3
+      with:
+        distribution: 'temurin'
+        java-version: ${{ matrix.java }}
+    - name: Build with Maven
+      run: mvn -V --batch-mode -Ddoclint=all --file pom.xml --no-transfer-progress -Pslf4j-simple
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b8ba7683..e596c137 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -1,1661 +1,1661 @@
-<!--
-
-   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.9.0" date="2021-MM-DD" description="Maintenance and bug fix release (Java 8).">
-      <!-- FIX -->
-      <action type="fix" issue="NET-708" dev="ggregory" due-to="XenoAmess">
-        Use yyyy instead of YYYY in SimpleDateFormat #97.
-      </action>
-      <action type="update" dev="sebb">
-        Prevent serialization of the 4 classes that implement Serializable.
-        It is not useful and is unlikely to work properly.
-      </action>
-      <action type="fix" dev="ggregory" due-to="Arturo Bernal">
-        Use Math.min and Math.max method instead of manual calculations. #104.
-      </action>
-      <!-- ADD -->
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.mdtmInstant(String).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add MLSxEntryParser.parseGmtInstant(String).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.getControlKeepAliveReplyTimeoutDuration().
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.setControlKeepAliveReplyTimeout(Duration).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.getControlKeepAliveTimeoutDuration().
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.setControlKeepAliveTimeout(Duration).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.getDataTimeout().
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.setDataTimeout(Duration).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPFile.getTimestampInstant().
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        Add github/codeql-action.
-      </action>
-      <!-- UPDATE -->
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        A actions/setup-java from 1.4.3 to 3.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump actions/checkout from 2.3.4 to 3 #89, #91, #100.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
-        Bump actions/cache from 2.1.6 to 3.0.2 #93, #102.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump junit from 4.13.1 to 4.13.2 #74.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
-        Bump commons-io from 2.6 to 2.11.0 #60.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Bump commons.jacoco.version from 0.8.6 to 0.8.7.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Bump commons.japicmp.version from 0.14.3 to 0.15.7.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Bump commons.surefire.version from 2.22.2 to 3.0.0-M5.
-      </action>
-      <action type="update" dev="ggregory" due-to="XenoAmess, Gary Gregory">
-        Bump ftpserver-core from 1.1.1 to 1.2.0 #96.
-      </action>
-    </release>
-    <release version="3.8.0" date="2021-02-13" description="Maintenance and bug fix release (Java 7).">
-      <!-- ADD -->
-      <action type="add" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
-        Add and use NetConstants.
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        Add and use SocketClient.applySocketAttributes().
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.hasFeature(FTPCmd).
-      </action>
-      <action type="add" dev="ggregory" due-to="Gary Gregory">
-        [FTP] Add FTPClient.mdtmCalendar(String).
-      </action>
-      <!-- FIX -->
-      <action type="fix" dev="ggregory" due-to="Gary Gregory">
-        [IMAP] Fix concurrent counting of chunks in IMAPExportMbox.
-      </action>
-      <action type="fix" dev="ggregory" due-to="Gary Gregory">
-        Fix possible if rare NPEs in tests.
-      </action>
-      <!-- UPDATE -->
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump actions/checkout from v2.3.3 to v2.3.4 #69.
-      </action>
-      <action issue="NET-685" type="update" dev="ggregory" due-to="Simo385">
-        Update SocketClient default connect timeout from ∞ to 60 seconds #51.
-      </action>
-      <action issue="NET-695" type="update" dev="ggregory" due-to="Gary Gregory, Possibly Cott">
-        Apply SocketClient timeout after connection but before SSL negotiation.
-      </action>
-      <action type="update" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
-        Minor Improvements #71, #72.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump actions/cache from v2 to v2.1.4 #73.
-      </action>
-    </release>
-    <release version="3.7.2" date="2020-10-14" description="Maintenance and bug fix release (Java 7).">
-      <action issue="NET-689" type="fix" dev="ggregory" due-to="Charlie, Gary Gregory">
-        Host name is not set on the SSLSocket causing isEndpointCheckingEnabled to fail.
-      </action>
-      <action type="fix" dev="ggregory" due-to="Dependabot">
-        Fix possible socket and input stream leak on socket exception in
-        org.apache.commons.net.ftp.FTPClient._retrieveFile(String, String, OutputStream).
-      </action>
-      <action issue="NET-690" type="fix" dev="ggregory" due-to="payal-meh, Gary Gregory">
-        Performance issue when using the FTPClient to retrieve files #65.
-      </action>
-      <action issue="NET-691" type="update" dev="ggregory" due-to="Lewis John McGibbney">
-        Improve Javadoc for IMAPSClient #68.
-      </action>
-      <!-- UPDATES -->
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump actions/setup-java from v1.4.2 to v1.4.3 #62.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump junit from 4.13 to 4.13.1 #67.
-      </action>
-    </release>
-    <release version="3.7.1" date="2020-09-30" description="Maintenance and bug fix release (Java 7).">
-      <action issue="NET-687" type="fix" dev="ggregory" due-to="Gary Gregory, Mikael, j-verse">
-        [FTPS] javax.net.ssl.SSLException: Unsupported or unrecognized SSL message, #59.
-      </action>
-      <!-- UPDATES -->
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Update actions/checkout from v2.3.1 to v2.3.3 #56, #61.
-      </action>
-    </release>
-    <release version="3.7" date="2020-08-05"
-      description="
-This is mainly a bug-fix release (Java 7). 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 (Java 6). 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 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 (Java 6). 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 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>
+<!--
+
+   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.9.0" date="2021-MM-DD" description="Maintenance and bug fix release (Java 8).">
+      <!-- FIX -->
+      <action type="fix" issue="NET-708" dev="ggregory" due-to="XenoAmess">
+        Use yyyy instead of YYYY in SimpleDateFormat #97.
+      </action>
+      <action type="update" dev="sebb">
+        Prevent serialization of the 4 classes that implement Serializable.
+        It is not useful and is unlikely to work properly.
+      </action>
+      <action type="fix" dev="ggregory" due-to="Arturo Bernal">
+        Use Math.min and Math.max method instead of manual calculations. #104.
+      </action>
+      <!-- ADD -->
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.mdtmInstant(String).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add MLSxEntryParser.parseGmtInstant(String).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.getControlKeepAliveReplyTimeoutDuration().
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.setControlKeepAliveReplyTimeout(Duration).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.getControlKeepAliveTimeoutDuration().
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.setControlKeepAliveTimeout(Duration).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.getDataTimeout().
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.setDataTimeout(Duration).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPFile.getTimestampInstant().
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        Add github/codeql-action.
+      </action>
+      <!-- UPDATE -->
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        A actions/setup-java from 1.4.3 to 3.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump actions/checkout from 2.3.4 to 3 #89, #91, #100.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
+        Bump actions/cache from 2.1.6 to 3.0.3 #93, #102.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump junit from 4.13.1 to 4.13.2 #74.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
+        Bump commons-io from 2.6 to 2.11.0 #60.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Bump commons.jacoco.version from 0.8.6 to 0.8.7.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Bump commons.japicmp.version from 0.14.3 to 0.15.7.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Bump commons.surefire.version from 2.22.2 to 3.0.0-M5.
+      </action>
+      <action type="update" dev="ggregory" due-to="XenoAmess, Gary Gregory">
+        Bump ftpserver-core from 1.1.1 to 1.2.0 #96.
+      </action>
+    </release>
+    <release version="3.8.0" date="2021-02-13" description="Maintenance and bug fix release (Java 7).">
+      <!-- ADD -->
+      <action type="add" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
+        Add and use NetConstants.
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        Add and use SocketClient.applySocketAttributes().
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.hasFeature(FTPCmd).
+      </action>
+      <action type="add" dev="ggregory" due-to="Gary Gregory">
+        [FTP] Add FTPClient.mdtmCalendar(String).
+      </action>
+      <!-- FIX -->
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">
+        [IMAP] Fix concurrent counting of chunks in IMAPExportMbox.
+      </action>
+      <action type="fix" dev="ggregory" due-to="Gary Gregory">
+        Fix possible if rare NPEs in tests.
+      </action>
+      <!-- UPDATE -->
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump actions/checkout from v2.3.3 to v2.3.4 #69.
+      </action>
+      <action issue="NET-685" type="update" dev="ggregory" due-to="Simo385">
+        Update SocketClient default connect timeout from ∞ to 60 seconds #51.
+      </action>
+      <action issue="NET-695" type="update" dev="ggregory" due-to="Gary Gregory, Possibly Cott">
+        Apply SocketClient timeout after connection but before SSL negotiation.
+      </action>
+      <action type="update" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">
+        Minor Improvements #71, #72.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump actions/cache from v2 to v2.1.4 #73.
+      </action>
+    </release>
+    <release version="3.7.2" date="2020-10-14" description="Maintenance and bug fix release (Java 7).">
+      <action issue="NET-689" type="fix" dev="ggregory" due-to="Charlie, Gary Gregory">
+        Host name is not set on the SSLSocket causing isEndpointCheckingEnabled to fail.
+      </action>
+      <action type="fix" dev="ggregory" due-to="Dependabot">
+        Fix possible socket and input stream leak on socket exception in
+        org.apache.commons.net.ftp.FTPClient._retrieveFile(String, String, OutputStream).
+      </action>
+      <action issue="NET-690" type="fix" dev="ggregory" due-to="payal-meh, Gary Gregory">
+        Performance issue when using the FTPClient to retrieve files #65.
+      </action>
+      <action issue="NET-691" type="update" dev="ggregory" due-to="Lewis John McGibbney">
+        Improve Javadoc for IMAPSClient #68.
+      </action>
+      <!-- UPDATES -->
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump actions/setup-java from v1.4.2 to v1.4.3 #62.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump junit from 4.13 to 4.13.1 #67.
+      </action>
+    </release>
+    <release version="3.7.1" date="2020-09-30" description="Maintenance and bug fix release (Java 7).">
+      <action issue="NET-687" type="fix" dev="ggregory" due-to="Gary Gregory, Mikael, j-verse">
+        [FTPS] javax.net.ssl.SSLException: Unsupported or unrecognized SSL message, #59.
+      </action>
+      <!-- UPDATES -->
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Update actions/checkout from v2.3.1 to v2.3.3 #56, #61.
+      </action>
+    </release>
+    <release version="3.7" date="2020-08-05"
+      description="
+This is mainly a bug-fix release (Java 7). 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 (Java 6). 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 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 (Java 6). 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 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>