<?xml version="1.0"?>
<document>
  <properties>
    <title>Changes</title>
    <author email="brekke@apache.org">Jeffrey D. Brekke</author>
  </properties>

  <body>
    <release version="1.2.0-dev" date="In CVS">
    </release>
    <release version="1.1.0" date="October 23, 2003">
      <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.
        <pre>
        drwxr-xr-x 1 usernameftp 512 Jan 29 23:32 prog
        </pre>
      </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="02/23/2003">
      <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>
