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

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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
	<properties>
		<title>Changes</title>
		<author email="rwinston@apache.org">Rory Winston</author>
	</properties>
	
	<body>

		<release version="1.5.0" date="" description="">
			<action dev="dfs" type="fix" issue="NET-3">
				TelnetInputStream.java: Applied Rob Hasselbaum's
				&lt;rhasselbaum -> alumni.ithaca.edu&gt;
				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 &lt;josejuan.montiel@gmail.com&gt;.
			</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>
			<action dev="sebb" type="fix" issue="NET-195">
				NtpV3Impl.java: Avoid double-checked locking
			</action>
			<action dev="sebb" type="fix" issue="NET-197">
				FTPFileEntryParserImpl.java: Fix Javadoc for preParse()
			</action>
			<action dev="rwinston" type="fix" issue="NET-201">
				UnixFTPEntryParser.java: Support Solaris special devices
			</action>
			<action dev="sebb" type="fix" issue="NET-205">
				*FTPEntryParser.java: Keep files with unparseable dates in list
			</action>
			<action dev="sebb" type="fix" issue="NET-206">
				DefaultFTPFileEntryParserFactory.java, TFTPRequestPacket.java: Fix String conversions in non-English Locales
			</action>
			<action dev="sebb" type="fix" issue="NET-211">
				FTPTimestampParserImpl.java: Fix lenient future dates at year boundary
			</action>
            <action dev="sebb" type="fix" issue="NET-194">
                Replace Exception with IOException
            </action>
            <action dev="rwinston" 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-231">
                ParserInitializationException when connecting to a Unix FTP server: comparison string must be upper case
                Added check for AS/400 response.
            </action>
            <action dev="sebb" type="fix" issue="NET-225">
                FTPFileEntryParserImpl.preParse() doesn't remove unparsable entries at the end of the file list
            </action>
            <action dev="sebb" type="fix" issue="NET-294">
                UnixFTPEntryParser fails to parse some entries
            </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 &lt;Andrea Rombald&gt;
			</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
				&lt;Per.Lindberger@linkon.se&gt;.
			</action>
			<action dev="rwinston" type="fix">
				Applied fix for PR 33942 and PR 31793. Original patch submitted by &lt;mario@ops.co.at&gt;
			</action>
			<action dev="rwinston" type="fix">
				TFTPClient was ignoring final ACK (PR 32859). Thanks to &lt;perttu.auramo@ekahau.com&gt;
			</action>
			<action dev="rwinston" type="fix">
				Applied fix for ACL parsing in the FTP client (PR 33972). Submitted by &lt;robertalasch@yahoo.com&gt;
			</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 &lt;sammy_c@lineone.net&gt;
			</action>
			<action dev="rwinston" type="fix">
				NTP port parameter was being ignored (PR 34219). Fixed by &lt;felix.eichhorn@3soft.de&gt;
			</action>
			<action dev="scohen" type="add">
				An FTP parser for MVS was added. Submitted by &lt;wnoto@openfinance.com&gt;
			</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 &lt;mario@ops.co.at&gt;
			</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 &lt;tpalkot@gmail.com&gt;.
			</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 &lt;mike.george@comcast.net&gt;.
			</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 &lt;steve@widge.net&gt;
			</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 &lt;jmordax@terra.es&gt;
			</action>
			<action dev="rwinston" type="fix">
				Remove trailing null byte in TFTP packets. Thanks to &lt;gerard.dens@alcatel.be&gt;
			</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 &lt;leif@tanukisoftware.com&gt;.
			</action>
			<action dev="dfs" type="fix">
				Fix TelnetClient zombie thread issue
			</action>	


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

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

		<release version="1.2.0" date="April 30, 2004" description="autodetection of system for listings">
			<action dev="scohen" type="fix">
				Mario Ivankovits &lt;mario@ops.co.at&gt; 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 &lt;mario@ops.co.at&gt; 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 &lt;ctwise@bellsouth.net&gt; provided a
				<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=24078">
					patch</a> 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>

		<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 &lt;Rory.Winston@telewest.co.uk&gt; 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
				&lt;matthieu.recouly@laposte.net&gt; so that
				UnixFTPEntryParser may handle listings of the form
				<pre>
					drwxr-xr-x 1 usernameftp 512 Jan 29 23:32 prog
				</pre>
				where the space between user name and group is omitted.
			</action>
			<action dev="dfs" type="fix">
				Applied patch from Stephane Este-Gracias
				&lt;sestegra@free.fr&gt; 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>
