<?xml version="1.0"?>
<!--
Copyright 2003-2005 The Apache Software Foundation

Licensed 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.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="February 9, 2005" description="fixes">
			<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>
