Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / WWW / RelNotes.html
diff --git a/JMCR-Stable/real-world application/jigsaw/WWW/RelNotes.html b/JMCR-Stable/real-world application/jigsaw/WWW/RelNotes.html
new file mode 100644 (file)
index 0000000..c1b5f39
--- /dev/null
@@ -0,0 +1,2241 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+  <HEAD>\r
+    <TITLE>Documentation Overview</TITLE>\r
+    <link rel="stylesheet" type="text/css" href="style/jigsaw2.css">\r
+  </HEAD>\r
+  <BODY TEXT="#000000" BGCOLOR="#FFFFFF">\r
+\r
+    <div class="icons-w3c">\r
+      <a href="../../">\r
+       <img src="/Icons/w3c_home" \r
+         border="0" \r
+         alt="W3C logo"\r
+         height="48" \r
+         width="72"></a>\r
+    </div>\r
+    <div class="icons-jigsaw">\r
+      <a href="../">\r
+       <img src="/Icons/jigsaw" \r
+         border="0"\r
+         alt="Jigsaw"\r
+         height="49"\r
+         width="212"></a>\r
+    </div>\r
+\r
+    <div class="title">\r
+      <H1 class="title">\r
+       Jigsaw<br>\r
+       <span class="subtitle">release notes</span>\r
+      </H1>\r
+      <hr noshade width="70%">\r
+    </div>\r
+\r
+    <div class="left">\r
+      <p class="link">\r
+       <span class="linktitle">Jigsaw releases</span><br>\r
+       <a class="local" href="#2.2.6">2.2.6</a><br>\r
+       <a class="local" href="#2.2.5">2.2.5</a><br>\r
+       <a class="local" href="#2.2.4">2.2.4</a><br>\r
+       <a class="local" href="#2.2.3">2.2.3</a><br>\r
+       <a class="local" href="#2.2.2">2.2.2</a><br>\r
+       <a class="local" href="#2.2.1">2.2.1</a><br>\r
+       <a class="local" href="#2.2.0">2.2.0</a><br>\r
+       <a class="local" href="#2.1.2">2.1.2</a><br>\r
+       <a class="local" href="#2.0.5">2.0.5</a><br>\r
+       <a class="local" href="#2.1.1">2.1.1</a><br>\r
+       <a class="local" href="#2.0.4">2.0.4</a><br>\r
+       <a class="local" href="#2.1.0">2.1.0</a><br>\r
+       <a class="local" href="#2.0.3">2.0.3</a><br>\r
+       <a class="local" href="#2.0.2">2.0.2</a><br>\r
+       <a class="local" href="#2.0.1">2.0.1</a><br>\r
+       <a class="local" href="#2.0.0">2.0.0</a><br>\r
+       <a class="local" href="#2.0beta3">2.0 beta3</a><br>\r
+       <a class="local" href="#2.0beta2">2.0 beta2</a><br>\r
+       <a class="local" href="#2.0beta1">2.0 beta1</a><br>\r
+       <a class="local" href="#2.0alpha1">2.0 alpha1</a>\r
+      <p class="link">\r
+       <a class="local" href="#1.0beta2">1.0 beta2</a><br>\r
+       <a class="local" href="#1.0beta1">1.0 beta1</a><br>\r
+       <a class="local" href="#1.0beta">1.0 beta</a><br>\r
+       <a class="local" href="#1.0alpha5">1.0alpha5</a><br>\r
+       <a class="local" href="#1.0alpha4">1.0alpha4</a><br>\r
+       <a class="local" href="#1.0alpha3">1.0alpha3</a><br>\r
+       <a class="local" href="#1.0alpha2">1.0alpha2</a><br>\r
+       <a class="local" href="#1.0alpha1">1.0alpha1</a><br>\r
+    </div>\r
+    <div class="body">\r
+      <p class="pintro">\r
+      Following the normal W3C conventions, there were two different\r
+      kind of releases of <b>Jigsaw</b>. Member release are provided\r
+      to W3C members, a month in advance of the Public\r
+      Release. Depending on their status the member release may get a\r
+      different release number then the public release. On this page,\r
+      you will find the release notes for the different versions of\r
+      <b>Jigsaw</b> (which don't necessarily coincide with member\r
+      release). From the beginning of 1998, the releases are only\r
+      public ones, we still add the word "public" to avoid any\r
+      confusion.</p>\r
+    \r
+    <p class="pintro"><span class="larger">NOTE!</span> The odd number in the\r
+      middle state that this is NOT a stable release, not that it is unstable,\r
+      but it means that not all the features are present, and that some more\r
+      testing is needed until it gets its even middle number.</p>\r
+\r
+      <h2><a name="2.2.6"></a>Jigsaw 2.2.6</h2>\r
+      <b>A public release, made on April 10th, 2007.</b>\r
+\r
+      <p>This version is a bugfix and optimized version of 2.2.5. It may be\r
+         the latest using jdk1.2 only code.</p>\r
+\r
+\r
+      <h3>New Features</h3>\r
+       <p>\r
+       Support for more XML Parsers in the Resources deserialization code\r
+      </p>\r
+      \r
+      <ul>\r
+       <li>Added support for connection reuse policies in the \r
+         Client stack.</li>\r
+       <li>Added a default policy to reuse the same connection when the \r
+         thread matches (in HttpBasicConnection)</li>\r
+       <li>Added a socket timeout on request\r
+         parsing, to avoid having it linked to request timeout</li>\r
+       <li>The Servlet runner thread now use the server\r
+         timeout mechanism to interrupt the running thread when the server\r
+         is closing the request on timeout.</li>\r
+       <li>Added a method to print Dates in ISO 8601 format without \r
+         milliseconds</li>\r
+       <li>Added a "detach" method to HttpBasicConnection to remove a \r
+         connection from the list of used client connections but without \r
+         closing the socket immediately (used when the client hits a \r
+         HTTP/1.0 server that doesn't send Content-Length). </li>\r
+       \r
+      <h3>Bug Fixes</h3>\r
+      <ul>  \r
+       <li>Fixed cookie parsing bug, if the cookie value contains a '='</li>\r
+       <li>Fixed SAX parsing of stores and remote resource description (allow multiple 'characters' call for one value)</li>\r
+       <li>Removed an unneeded synchronization point in HTTPFrame.getURL()</li>\r
+       <li>Added an extra SP when exporting auth headers with different components</li>\r
+       <li>Fixed source code to remove 'enum' as it is now a keywork starting with JDK 1.5</li>\r
+       <li>Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).</li>\r
+       <li>Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers</li>\r
+       <li>Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal</li>\r
+       <li>Fixed a few WebDAV properties that were using wrong formats</li>\r
+       <li>HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.</li>\r
+       <li>More SSL and servlet related patches from Thomas Kopp.</li>\r
+       <li>ActiveStream patch, under some condition, the same data \r
+         could be re-read a data chunk (thanks to Doug Borland)</li>\r
+       <li>The servlet parameter decoding now uses the right charset.</li>\r
+       <li>Fixed error when file timestamp was not modified but the file was actually modified.</li>\r
+       <li>Fixed deadlock during store change notification when the sweeper is running (very rare)</li>\r
+       <li>Fixed server client count when load is raising from LIGHT to DEAD</li>\r
+       <li>Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop</li>\r
+       <li>More SSL patches from Thomas Kopp, see <a href="http://dev.w3.org/cvsweb/java/classes/org/w3c/jigsaw/https/SSLAdapter.java?rev=1.7&amp;content-type=text/x-cvsweb-markup">changelog</a> for more details.</li>\r
+\r
+       <li>Fixed connection count when MimeParser did not started and connection was new.</li>\r
+       <li>Client stack now reuses the\r
+         connection timeout parameter.</li>\r
+      </ul>\r
+\r
+      <h2><a name="2.2.5"></a>Jigsaw 2.2.5</h2>\r
+      <b>A public release, made on June 8th, 2005.</b>\r
+\r
+      <p>This version is a bugfix and optimized version of 2.2.4.\r
+       It contains an updated version of the SSL code (that may require \r
+       the use of jdk1.4). </p>\r
+\r
+      <h3>New Features</h3>\r
+       <p>\r
+       New Digest Authentication code has been added. \r
+       It now conforms to \r
+       <a href="http://www.ietf.org/rfc/rfc2617.txt">RFC2617</a>. \r
+       The old code was implementing only the \r
+       <a href="http://www.ietf.org/rfc/rfc2069.txt">RFC2069</a> \r
+       version of the Digest Authentication.\r
+      </p>\r
+      \r
+      <p>\r
+       WebDAV support has been improved, interoperating with most WebDAV\r
+       clients now.\r
+      </p>\r
+      \r
+      <h3>Bug Fixes</h3>\r
+      \r
+<ul>\r
+  <li>Added a "detach" method to HttpBasicConnection to remove a connection from the list of used client connections but without closing the socket immediately (used when the client hits a HTTP/1.0 server that doesn't send Content-Length). </li>\r
+  <li>Fixed client connection deletion in connection reuse, it was leading to a leak in the client hashtable (and to lots of connections in CLOSE_WAIT).</li>\r
+  <li>Fixed bug in DateParser (wrong timezone offset) thanks to Menno Jonkers</li>\r
+\r
+  <li>Optimized a bit Digest Auth (the RFC2069 one) and implemented Digest Auth with qop="auth" per RFC2617 (available with SecurityLevel set to 2), See DigestQopAuthPrincipal</li>\r
+  <li>Fixed a few WebDAV properties that were using wrong formats</li>\r
+  <li>Added a method to print Dates in ISO 8601 format without milliseconds</li>\r
+  <li>HeaderFilter now sets the relevant headers even when the reply is sent via the exception mechanism.</li>\r
+  <li>ActiveStream patch, under some condition, the same data \r
+       could be re-read a data chunk (thanks to Doug Borland)</li>\r
+  <li>The servlet parameter decoding now uses the right charset.</li>\r
+  <li>The Servlet runner thread now use the server\r
+       timeout mechanism to interrupt the running thread when the server\r
+       is closing the request on timeout.</li>\r
+\r
+  <li>Fixed error when file timestamp was not modified but the file was actually modified.</li>\r
+  <li>Fixed deadlock during store change notification when the sweeper is running.</li>\r
+  <li>Fixed server client count when load is raising from LIGHT to DEAD</li>\r
+\r
+  <li>Fixed Segment information unpickle, as the segment start and size were not properly parsed, leading to an infinite loop</li>\r
+  <li>More SSL patches from Thomas Kopp, see <a href="http://dev.w3.org/cvsweb/java/classes/org/w3c/jigsaw/https/SSLAdapter.java?rev=1.7&amp;content-type=text/x-cvsweb-markup">changelog</a> for more details.</li>\r
+  <li>Fixed connection count when MimeParser did not started and connection was new.</li>\r
+</ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Added a socket timeout on request\r
+         parsing, to avoid having it linked to request timeout</li>\r
+       <li>Added a default policy to reuse the same connection when the thread matches (in HttpBasicConnection)</li>\r
+       <li>Added support for connection reuse policies in the Client stack.</li>\r
+       <li>Client stack now reuses the connection timeout parameter.</li>      \r
+      </ul>\r
+\r
+\r
+      <h2><a name="2.2.4"></a>Jigsaw 2.2.4</h2>\r
+      <b>A public release, made on February 18th, 2004.</b>\r
+\r
+      <p>This version is a bugfix and optimized version of 2.2.3.\r
+       It contains an updated version of the SSL code (that may require \r
+       the use of jdk1.4). It contains a <strong>security fix</strong>, so\r
+       you are encouraged to update as soon as possible.</p>\r
+\r
+      <h3>New Features</h3>\r
+       <p>The HTTP Client stack has been completely reworked to be \r
+       faster and to avoid keeping information on too many remote servers.\r
+       The client stack now also has a timeout on connect.\r
+      </p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fix in the client stack persistent connection handler. It now closes the socket and mark the connection free when a "Connection: close" header is in the reply.</li>\r
+       <li>SSL patches from Thomas Kopp.</li>\r
+       <li>URI components now generate an exception when a separator is found</li>\r
+       <li>Memory usage optimization of the serialization of a resource.</li>\r
+       <li>Read/write of stores is now more fault tolerant.</li>\r
+       <li>Fixed the client stack use of connections, also the global server knowledge hastable is now trimmed the right way.</li>\r
+       <li>Fixed StatisticsFrame to use less StringBuffers</li>\r
+       <li>Added a configurable timeout on connect, for the HTTP client stack. <code>org.w3c.www.protocol.http.connections.connTimeout</code> (defaulting to 1000ms)</li>\r
+       <li>Fixed ContainerResource check for\r
+         duplicate key, the "new key" algorithm is now more random\r
+         (ie it uses the\r
+         whole scale instead of the object serial mask), as it was leading to\r
+         infinite loops on huge sites.</li>\r
+      </ul>\r
+\r
+      <h2><a name="2.2.3"></a>Jigsaw 2.2.3</h2>\r
+      <b>A public release, made on November 27th, 2003.</b>\r
+\r
+      <p>This version is a bugfix and optimized version of 2.2.2.\r
+       It also includes Jigedit with WebDAV support, a package with\r
+       a specific WebDAV configuration will follow, and a tutorial to do the\r
+       <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>SSL support for HTTP and WebDAV servers, thanks to \r
+         <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>, \r
+       a <a href="Doc/User/ssl.html">tutorial</a> is available</li>\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed internal copy in DAVFrame in the \r
+         case of a SSL server</li>\r
+       <li>Added the underlying exception in the\r
+         HttpManager to distinguish between errors in the client stack.</li>\r
+       <li>Fixed ContainerResource check for\r
+         duplicate key, the "new key" algorithm is now more random (ie it uses the\r
+         whole scale instead of the object serial mask), as it was leading to\r
+         infinite loops on huge sites.</li>\r
+       <li>Fixed deadlock in NegotiatedFrame.\r
+         getVary() allowed a backward sync chain.</li>\r
+       <li>Added a "equiv" method in MimeType to\r
+         check for text/xml - application/xml rough equivalence on PUT</li>\r
+       <li>Added Long support in HttpBuffer and\r
+         HttpParser</li>\r
+       <li>Fixed lock ordering in NewStoreEntry to\r
+         avoid a deadlock</li>\r
+       <li>Verification of connection availability\r
+         on POST changed (need to have a fd_err + select to do it in a better\r
+         way)</li>\r
+       <li>Fixed deadlock when a file resource\r
+         mark its parent as modified (backward locking, again)</li>\r
+       <li>CvsRunner now uses File.createTempFile\r
+         instead of hardcoded /tmp (was <a\r
+           href="http://lists.w3.org/Archives/Public/www-jigsaw/2003MayJun/0019.html">problematic\r
+           on windows platform</a>)</li>\r
+       <li>Fixed deadlock in FileResource\r
+         (backward locking)</li>\r
+       <li>Fixed CgiFrame to accept more output\r
+         from Cgis (triggered my perl cgi library)</li>\r
+       <li>Added TeraBytes support for statistics\r
+         frame</li>\r
+       <li>Fixed notifyUnload in ForwardFrame to\r
+         avoid nullpointer exception (<a\r
+           href="http://lists.w3.org/Archives/Public/www-jigsaw/2003MarApr/0019.html">patch\r
+           from Brian Laird</a>)</li>\r
+       <li>Fixed getParameterMap of ServlerRequest\r
+         to map servlet2.3 spec</li>\r
+       <li>CacheFilter now normalize the URL\r
+         before any processing to avoid duplication on capitalization</li>\r
+       <li>Fixed test for socket close in jdk1.4\r
+         specific part, added a property to allow retries on two-steps request, in\r
+         the case of error on headers (thx to Phil Blake from IBM pointing me this\r
+         one)</li>\r
+       <li>Writers for resource serialization,\r
+         both in admin server and ResourceStoreManager now force UTF-8 encoding\r
+         (as XML is declared to be UTF-8)</li>\r
+       <li>Error recovery on parsing errors of\r
+         serialized resources, allowing stores to continue loading</li>\r
+       <li>Cleaned stat generation and added\r
+         hits/sec</li>\r
+       <li>HtmlGenerator now uses HTML4.01 and\r
+         adds the charset parameter if it is known</li>\r
+       <li>Added finer grain statistics by\r
+         separating dynamic from static generated replies</li>\r
+       <li>Fixed replaying of 1xx replies back to\r
+         the client</li>\r
+       <li>Fixed HttpCacheControl to add new\r
+         values for a directive that appears several times</li>\r
+       <li>Re-fixed validators for If-Match</li>\r
+       <li>dupRequest in proxy now removes\r
+         Proxy-Authorization, thx to Thomas Kriegelstein</li>\r
+       <li>Client now send back a BAD_REQUEST when\r
+         the http request parser in strict mode throw an exception</li>\r
+       <li>Fixed header name+":" parsing to\r
+         include implied LWS</li>\r
+       <li>proxy now serves GATEWAY_TIMEOUT and\r
+         BAD_GATEWAY as it should</li>\r
+       <li>Kludge for Age and maxValue -&gt; must\r
+         use Long instead of integers</li>\r
+       <li>Fixed sharing default for the cache to\r
+         match the one of CacheProp (true)</li>\r
+       <li>Strict HTTP header parsing mode made\r
+         more valid wrt quoted strings</li>\r
+       <li>More error handling in strict mode to\r
+         generate BAD_REQUEST replies</li>\r
+       <li>A server-side "lenient" HTTP parsing\r
+         property has been added, decoupled from the client-side one, settable via\r
+         GeneralProperties in JigAdmin</li>\r
+       <li>Parsing of field-value now has a\r
+         strict/lenient mode</li>\r
+       <li>Revalidation on HEAD now invalidates on\r
+         new values</li>\r
+       <li>Fixed handling of errors during HTTP\r
+         headers parsing in the proxy, now returns a BAD_GATEWAY</li>\r
+       <li>Parsing of HttpInteger now generates an\r
+         exception on overflow</li>\r
+       <li>Accept header is no longer\r
+         automatically added by the proxy when the client request do not have\r
+         it.</li>\r
+       <li>Fixed deadlock in ServletWrapper wrt\r
+         lock ordering of timeout manager, when different instances of the servlet\r
+         are created while some are timeouting</li>\r
+       <li>Handling of HTTP exception in the\r
+         ForwardFrame is changed, direct HTTP exception now generates a 502 Bad\r
+         Gateway instead of a 504</li>\r
+       <li>Precondition failed in the cache now\r
+         generate an exception with a complete reply (ie: not reusing "wrong"\r
+         informations from the cached resource)</li>\r
+       <li>HttpCacheControl raw bytes shouldn't be\r
+         unquoted before parsing</li>\r
+       <li>Replies from a shared cache now remove\r
+         the header list protected by a private cache-control</li>\r
+       <li>Headers protected by a no-cache\r
+         directive are no longer stored</li>\r
+       <li>Cache-Control now parses extensions\r
+         instead of throwing an exception</li>\r
+       <li>Host header normalization now uses case\r
+         insensitive URI scheme comparison</li>\r
+       <li>Proxy now forwards back the 100\r
+         Continue reply from the upstream server</li>\r
+       <li>Multiple 100 results now in multiple\r
+         ContinueEvents</li>\r
+       <li>Validators (If-None-Match...) in the\r
+         EntityCacheResource are now matching the one in HTTPFrame</li>\r
+       <li>Default freshness lifetime for cgi with\r
+         no header info is now 0.</li>\r
+       <li>Cache is not used when a no-store\r
+         directive is present in the request</li>\r
+       <li>Overflow in Max-Forward leads to an\r
+         exception and a 5xx reply now, instead of forwarding a wrong value</li>\r
+       <li>Added consistency checks in the cache\r
+         for revalidated resources</li>\r
+       <li>Fixed ForwardFrame to check\r
+         chuked/Content-Length mismatch by reusing the duplicated request/reply\r
+         that actually has the right information</li>\r
+       <li>Fixed CacheFilter to do stricter\r
+         host:port check before invalidating resources on PUT/POST/DELETE</li>\r
+       <li>Invalidation of Content-Location now\r
+         uses relative URIs (was partly done, a typo was in the way)</li>\r
+       <li>Fixed CacheStore to avoid calls on\r
+         LRUNodes, as synchronization is missing on the SyncLRUList in this\r
+         case.</li>\r
+       <li>CacheGeneration uses a more stricter\r
+         way of crawling the LRUlist of files to delete</li>\r
+       <li>Fixed parsing of Content-Range (support\r
+         for unknown length)</li>\r
+       <li>Fixed XMP parsing in JpegHeaders</li>\r
+       <li>Fixed servlet flush notification to\r
+         avoid race condition problems with sendError/sendRedirect and such.</li>\r
+       <li>Fixed http Client to avoid aborting on\r
+         strange servlet related IOExceptions (see org.w3c.jigsaw.http.Client\r
+         rev1.71 log for in depth explanations)</li>\r
+       <li>CgiFrame now display in the server\r
+         console stderr of forked Cgis (prevent some cgi lockups on Win\r
+         platform)</li>\r
+       <li>Added a way to restransmit some buggy\r
+         but not defined in rfc2616 headers (cookies, not to name it)</li>\r
+       <li>Invalidation of Location and\r
+         Content-Location was wrongly assuming that resource were live in the\r
+         cache, leading to errors for valid requests</li>\r
+       <li>Fixed If-Match if the resource ETag is\r
+         weak (currently, it can happen only in the cache)</li>\r
+       <li>Fixed JpegHeaders to deliver XMP at the\r
+         beginning of the XML and not at the beginning of the chunk</li>\r
+       <li>Fixed JpegComFrame, the parameter was\r
+         unescaped twice, problematic with application/???+xml mime types</li>\r
+       <li>Added JpegXmpFrame, to extract\r
+         automatically XMP from Jpeg images</li>\r
+       <li>Fixed revalidation in HTTPFrame when\r
+         both If-None-Match and If-Modified-Since are present</li>\r
+       <li>Implemented Vary support and\r
+         revalidation of negotiated resources in the client-side HTTP cache</li>\r
+       <li>Implemented 410 Gone permanent support\r
+         via the new "shrinkable" flag of DirectoryResource (similar to\r
+         "extensible" for for deletions)</li>\r
+       <li>Cached resources were incorrectly\r
+         asking for revalidation every time once marked invalid.</li>\r
+       <li>Cache now serve HEAD from the cache</li>\r
+       <li>Cache now invalidate resource in\r
+         Location or Content-Location for POST, PUT and DELETE, if host matches\r
+         the requested URL</li>\r
+       <li>Added \CHAR escaping in quoted string\r
+         of a header parameter</li>\r
+       <li>Client stack will retry requests only\r
+         if it is a known idempotent resource</li>\r
+       <li>Fixed TRACE to allow it again to be\r
+         proxied</li>\r
+       <li>Fixed bug in Expectation check in the\r
+         proxy, and in the general case.</li>\r
+       <li>Fixed bug in continuation with empty\r
+         lines</li>\r
+       <li>Fixed bug in header continuation\r
+         parsing</li>\r
+       <li>GZIPFilter was incorrectly setting\r
+         Transfer-Encoding instead of Content-Encoding</li>\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Memory usage reduction</li>\r
+      </ul>\r
+\r
+\r
+      <h2><a name="2.2.2"></a>Jigsaw 2.2.2</h2>\r
+      <b>A public release, made on January 8th, 2003.</b>\r
+\r
+      <p>This version is a bugfix and optimized version of 2.2.1.\r
+       It also includes Jigedit with WebDAV support, a package with\r
+       a specific WebDAV configuration will follow, and a tutorial to do the\r
+       <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>SSL support for HTTP and WebDAV servers, thanks to \r
+         <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>, \r
+       <a href="http://dev.w3.org/cvsweb/~checkout~/java/classes/org/w3c/jigsaw/https/readme.txt?rev=1.1&amp;content-type=text/plain">raw documentation</a> \r
+         is available</li>\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed ForwardFrame to forbid forward of\r
+         Content-Location when reply is chunked</li>\r
+       <li>Fixed ForwardFrame to remove received\r
+         Trailer header</li>\r
+       <li>Fixed HTTP stack's Reply to allow body\r
+         on OPTIONS per rfc2616</li>\r
+       <li>Fixed lock ordering in HTTPFrame\r
+         regarding methods on Container (deadlock reported 5/12/2002)</li>\r
+       <li>Fixed deadlock in Resource.getParent(),\r
+         when both child and parent try to lock each other.</li>\r
+       <li>Deadlock fixes in the HTTP client\r
+         stack</li>\r
+       <li>Removed potential conflicting\r
+         Connection: header values in the HTTP client stack during discovery\r
+         of HTTP capabilities</li>\r
+       <li>Fixed RedirectedFrame to avoid\r
+         ipv6-like hosts when it is a ipv4 one.</li>\r
+       <li>Added a way to optimize by not\r
+         unloading big stores, depending on a tunable limit.</li>\r
+       <li>Ensure that keys in the\r
+         ResourceStoreManager are not used twice when generated</li>\r
+       <li>Fixed the default encoding used in\r
+         JigsawHttpServletResponse per servlet 2.3 API</li>\r
+       <li>Solved the deadlock problem with\r
+         negotiated frame, directory listing, and everything that needs\r
+         backward traversal of the resource tree.</li>\r
+       <li>Fixed JigsawHttpServletResponse, it now\r
+         checks that the stream has been commited\r
+         before screaming</li>\r
+       <li>Fixed Base64Decoder based on Jeffery\r
+         Collins &lt;jcollins@boulder.net&gt; original patch</li>\r
+       <li>Fixed JigsawHttpServletRequest\r
+         getCharacterEncoding to return null when undefined instead of the\r
+         iso-8859-1 default.</li>\r
+       <li>Fixed ContentLengthInputStream, it now\r
+         send an IOException when the stream is cut too early in read()</li>\r
+       <li>Fixed HttpURLConnection getContentType\r
+         was raising an exception rather than returning null</li>\r
+       <li>Various updates in the HTTP stack, to\r
+         consume less memory and use non-deprecated Date API.</li>\r
+       <li>Integrated cookie parsing patch\r
+         contributed by Julien Mudry &lt;jmu@elca.ch&gt;</li>\r
+       <li>URL in jdk1.4 can have an empty file\r
+         element, it is now translated to '/' for all methods but\r
+         OPTIONS, where it is '*'</li>\r
+       <li>Special files "aux", "con", etc. can no\r
+         longer be created by the indexer on Windows platform \r
+         (still possible on other platforms as those files are not special\r
+         there).</li>\r
+       <li>Fixed servlet wrapper to close the\r
+         input stream when needed, also when a relocate or an error is\r
+         triggered from the servlet, an exception is raised if the client \r
+         already got (part of) the reply.</li>\r
+       <li>ServletWrapper now take the feeding\r
+         thread from a thread cache (avoid keeping too many open threads)</li>\r
+       <li>Fixed reuse of connection in the HTTP\r
+         Client stack, by using jdk1.4 method on socket (uses reflection to\r
+         keep the code backward compatible)</li>\r
+       <li>Fixed HTTP compliance of chunked\r
+         request, and proxy of request without body</li>\r
+       <li>Redid the InetAddress dump in the\r
+         logger as well as the status code dump</li>\r
+       <li>Memory and performance upgrade of the\r
+         infamous CommonLogger and ExtendedCommonLogger, who were  the primary\r
+         culprits in the memory usage once the stores are loaded.</li>\r
+       <li>Started to find and elimnate all\r
+         unnecessary memory allocated</li>\r
+       <li>Fixed directory index of\r
+         ZipDirectoryResource, to delete and get size information the right\r
+         way</li>\r
+       <li>Fixed ZipFrame to allow automagic\r
+         destruction of stale entries in the underlying zip</li>\r
+       <li>Error reported when an error occur in\r
+         the file system does not display the PATH any longer to avoid\r
+         disclosing</li>\r
+       <li>Fixed a potential leak (never emptied\r
+         hashtable) in HttpManager</li>\r
+       <li>Fixed RelocateFrame to accomodate\r
+         new ipv6 scan of host in URL</li>\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Memory usage reduction</li>\r
+       <li>CPU usage reduction (mostly the loggers that are the hotspots)</li>\r
+      </ul>\r
+\r
+      <h2><a name="2.2.1"></a>Jigsaw 2.2.1</h2>\r
+      <b>A public release, made on April 8th, 2002.</b>\r
+\r
+      <p>This version fixes bugs, especially a security bug of version 2.2.0\r
+       It also includes Jigedit with WebDAV support, a package with\r
+       a specific WebDAV configuration will follow, and a tutorial to do the\r
+       <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+       It is also the first release <a href="mailto:carine@w3.org">Carine\r
+         Bournez</a> worked on.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li><a href="Doc/User/jigshell.html">JigShell</a>, a small utility\r
+       <li>WebDAV enabled JigEdit</li>\r
+       <li>Implementation of <a href="http://httpd.apache.org/">Apache</a> \r
+<a href="http://httpd.apache.org/docs/mod/mod_asis.html">mod_asis</a>.</li>\r
+       <li>PushCache package, contributed by \r
+         <a href="mailto:Paul.Henshaw@fantastic.com">Paul Henshaw</a> from \r
+         The Fantastic Corporation.</li>\r
+       <li>TidyPutFilter, a filter to validate automatically the\r
+         <a href="http://www.w3.org/MarkUp/#xhtml1">XHTML</a> or\r
+         <a href="http://www.w3.org/MarkUp/#previous">HTML</a> sent via the\r
+         PUT method, using \r
+         <a href="http://sourceforge.net/projects/jtidy">JTidy</a>.</li>\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Previously uncaught error (ie: non Protocol ones) during lookup\r
+         are now resoved by sending a 400 Bad\r
+          Request </li>\r
+       <li>Fixed the way exception filters are called in httpd. Side \r
+         effect, ErrorFilter works again </li>\r
+       <li>Fixed a bug in TE Filter that was compressiong twice the stream\r
+         (need to figure out why it was called\r
+          twice though) </li>\r
+       <li>Fixed semantic of ; in the URI, with the right info given \r
+         during lookup</li>\r
+       <li>SECURITY FIX: Fixed security bug regarding URI parsing</li>\r
+       <li>Added a flag to remove the URI from default error pages as well\r
+         as the proxy module (SECURITY FIX: avoiding cross\r
+          scripting attacks)</li>\r
+       <li>Fixed ServletMapper to do redirect the right way (host parsing).\r
+         It was interacting with new jdk1.4\r
+          ipv6 scan </li>\r
+       <li>Merged patches from \r
+         <a href="mailto:Thomas.Kopp@dialogika.de">Thomas Kopp</a>\r
+         concerning servlets:\r
+         servlet loading, behaviour of\r
+          SingleThreadModel </li>\r
+       <li>Reverted 1.3 API calls to 1.2, or used reflection to use \r
+         jdk1.3 only methods in the push package</li>\r
+       <li>Added a specific frame to handle MKCOL and other \r
+         collection-related WebDAV methods in Jigedit</li>\r
+       <li>Fixed WebDAV implementation, it now sends all the requested\r
+         properties in a PROPFIND, with the\r
+          right statuds for the undefined ones.</li>\r
+       <li>Modified AclFilter to take benefit of skipBody </li>\r
+       <li>Added skipBody in Request, it allows a filter to skip an eventual\r
+         body in a better way than error\r
+          recovery. </li>\r
+       <li>Fixed bug when Content-Type was not set (it was set but the value\r
+         of the HttpMimeType was null,\r
+          defeating the usual check) </li>\r
+       <li>Fixed If-None-Match during the creation of a FileResource</li>\r
+       <li>Fixed trailing / for negotiated resources, it was ignored, \r
+         resulting in bad relative links </li>\r
+       <li>Fixed If-None-Match in HTTPFrame, it now handles *</li>\r
+       <li>ResourceStoreManager will issue a warning when a store raise an\r
+         exception during save, the general\r
+          save will continue (it was not the case before)</li>\r
+       <li>In CvsFileFrame, cvs update is performed also prior to a PUT.</li>\r
+       <li>Added stronger synchronization for log rotation. </li>\r
+       <li>Fixed indexer so that fake file resource can be created, as it \r
+         may be dangerous for directories, it is still\r
+          forbidden on those. </li>\r
+       <li>Fixed deadlock in DirectoryListerFrame, a lock was not done\r
+         resulting in locks done in the wrong order\r
+          in concurrent access </li>\r
+       <li>Fix NewStoreEntry, hashtable of loaded ResourceReference is now\r
+         cleared when the store is\r
+          unloaded. </li>\r
+       <li>Fix in EditableSlider, now a textfield can resize the boundaries \r
+         of the slider, a non-extensible mode is\r
+          also available </li>\r
+       <li>Fixed RedirectedFrame to add Content-Location after the internal\r
+         redirect, and Referer is kept.</li>\r
+       <li>Fixed NegotiatedFrame to gather filters from the selected\r
+         resource, collected during the lookup,\r
+          instead of the perform. However perform may select the resource if\r
+         the state is lost because of another filter.</li>\r
+       <li>Fixed error replies for JigEdit on a 412</li>\r
+       <li>Added synchronization fo class loading in servlet's class\r
+         loader</li>\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Resurrected -port as an undocumented deprecated feature.</li>\r
+       <li>Added CountInputStream, to get the actual number of bytes \r
+         read.</li>\r
+       <li>ByteArrayOutputStream now accept also InputStream</li>\r
+       <li>Implemented jdk1.2 API getErrorStream of HttpURLConnection</li>\r
+       <li>Implemented ETag override to match Apache FileETag directive in\r
+         JigEdit</li>\r
+      </ul>      \r
+\r
+      <h2><a name="2.2.0"></a>Jigsaw 2.2.0</h2>\r
+      <b>A public release, made on March 13th, 2001.</b>\r
+\r
+      <p>This release is the first stabilized version of the 2.1 series, now\r
+       renumbered as 2.2. It also includes WebDAV support, a package with\r
+       a specific WebDAV configuration will follow, and a tutorial to do the\r
+       <a href="Doc/User/webdav.html">WebDAV setup</a> is already online.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>WebDAV implementation\r
+       <li>org.w3c.util.DateParser: a parser for date in ISO 8601 format. \r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed Allow: header depending on the frame configuration.</li>\r
+       <li>StringAttribute now accept null as a valid value.</li>\r
+       <li>Fixed jigadmin to allow removing some attributes.</li>\r
+       <li>Fixed VirtualHost lookup to use the host part of the resolved URI \r
+         instead of only the Host header</li>\r
+       <li>Fixed Host: header checking for HTTP/1.1 requests</li>\r
+       <li>Bug fixed in ServletProperties Reader (InitArgs separator)</li>\r
+       <li>RuntimeException throwned when the servlet container has no \r
+         ServletDirectory.</li>\r
+       <li>Fixed VirtualHostFrame for fully qualified request in the URI on \r
+         not default ports.</li>\r
+       <li>Fixed / -> %2F for the URI trick for rdf metadata</li>\r
+       <li>Fixed caching for authenticated resources</li>\r
+       <li>Fixed logname for october (10)</li>\r
+       <li>Fixed Content-Length to 0 for a 201 Created without a body</li>\r
+       <li>Compliancy fix in the cache, entity headers removed from a Not\r
+         Modified reply</li>\r
+       <li>Fixed slider in JigAdmin to auto expand near the limits</li>\r
+       <li>Fixed NullPointerException in ETag-based PUT on Negotiated \r
+         Resource.</li>\r
+       <li>Fixed Chunking when 0 bytes were received, the stream was wrongly\r
+         closed.</li>\r
+       <li>Servlet errors are now propagated the right way, and the monitor\r
+         always released. </li>\r
+       <li>Chunking is allowed on Connection: close</li>\r
+       <li>Connection: close requests now adds the header automatically in\r
+         the reply</li>\r
+       <li>Logger can now log the original URL during an internal redirect \r
+       <li>Fixed Digest Auth bug (well update of the spec) regarding unquoted\r
+         parameters in the credential</li>\r
+       <li>Fixed TRACE method, now done directly at the server level, as it\r
+         is only used as an echo.</li>\r
+       <li>Robustness fix, servlet are now killed after the right timeout</li>\r
+       <li>Fix problem with servlet timeouts and errors/redirects.</li>\r
+       <li>Various fixes for persistent jdbc connections</li>\r
+       <li>Fixed bug in HttpBasicServer, when the number of IP for a host was\r
+         updated with less IPs</li>\r
+       <li>Fixed compliancy bug for OPTIONS * (Content-Length is now\r
+         explicitly 0)</li>\r
+       <li>Fixed log time when the server ran into daylight saving changes.\r
+       </li>\r
+       <li>And several other ones...</li>\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>HTTP Compliancy improved</li>\r
+       <li>Servlet now reuse Jigsaw filtering system even on the way back</li>\r
+       <li>Added support for mirroring from a non-root resource (providing\r
+         all the underneath links are relatives)\r
+       <li>Creation of NegotiatedResources in DirectoryResource is now \r
+         incremental. \r
+       <li>Added more statistics about resource store usage \r
+      </ul>      \r
+\r
+      <h2><a name="2.1.2"></a>Jigsaw 2.1.2</h2>\r
+      <b>A public release, made on August 9th, 2000.</b>\r
+\r
+      <p>This release is the updated and enhanced version of the 2.1.1 release\r
+       it includes all the new features found in 2.0.5 and stability has been\r
+       vastly improved since 2.1.1, for both server and client side, also\r
+       servlet and jsp support has been improved.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>CC/PP implementation.\r
+       <li>Persistent Jdbc connection handler.\r
+       <li>HTTP/0.9 support in client side API (*sigh*)\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Many fixes for JSP support\r
+       <li>Fixed init of log rotation and log format\r
+       <li>Fixed several deadlocks in during indexing+save+event processing\r
+       <li>Fixed HTML4.0 compliancy of container listings\r
+       <li>Fixed requestDispatcher for VirtualHosts\r
+       <li>Fixed problem with getServerName and Host with no port number.\r
+       <li>Connections count and overall stability in SocketClientFactory\r
+       <li>ETag generation fixed when a non-file resource is involved.\r
+       <li>Fixed XMLResourceWriter, child list for jigadmin was not encoded.\r
+       <li>Fixed CommonLogger, some entries were missing when the buffer\r
+         length was reached.\r
+       <li>Fixed a bug in HTTPFrame leading to modification of the stores\r
+         for every load of a store.\r
+       <li>Fixed AclRealm so that AuthUser state is added to the request\r
+       <li>Fixed JpegHeaders to release the file decriptors on the file\r
+       <li>Fixed JigAdmin to correct URI not ended with '/' \r
+         (leading to an error when using jdk1.3)\r
+       <li>Fixed Slider in Jigadmin so that it checks the bound to avoid \r
+         problems \r
+       <li>Fixed a bug in ServletMappefFrame (pathinfo not corectly set) \r
+       <li>Fixed a bug in ServletResponse.sendRedirect() \r
+       <li>Fixed HTTP/1.0 request in client side when a body is there and\r
+         an error is replied\r
+       <li>Fixed FowardFrame to close connection when amgibuity can be raised\r
+         by the client-side reply concerning Content-Length. \r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Added a lenient HTTP headers parsing mode to be kind to\r
+         ill-configured servers\r
+       <li>-host option resurrected\r
+       <li>CgiFrame can reuse the frame config\r
+       <li>JpegHeaders can extract metadata from digital cameras\r
+       <li>NegotiableFrame now uses ordering for Accept:\r
+       <li>Better Statistics Frame\r
+       <li>HttpAccept can have a quality factor\r
+       <li>Jigadmin can do a local reindex (that's what people usually want)\r
+       <li>Relocate and Redirect redone to be more flexible.\r
+       <li>MimeType can now be cloned\r
+       <li>Charset support, independant of the Mime Type\r
+       <li>Added get/setSMaxAge to be nice for caches\r
+       <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+       <li>Statistics frames are now giving more informations\r
+       <li>HTTPFrame can have multiple indexes\r
+       <li>HTTPFrame generate index for generic containers\r
+       <li>ThreadCache is now using a FIFO for the free threads, to deal\r
+         with some broken jdk.\r
+      </ul>      \r
+\r
+      <h2><a name="2.0.5"></a>Jigsaw 2.0.5</h2>\r
+      <b>A public release, made on July 5th, 2000.</b>\r
+\r
+      <p>This release is the updated and enhanced version of the 2.0.4 release\r
+       it includes all the new features available in 2.1.1, like servlet 2.2\r
+       support and JSP support. Also many bug fixes for improved stability\r
+       and HTTP/1.1 compliance.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>Servlet 2.2 support (except for .war as it is too\r
+         "file" oriented).\r
+       <li>Charset support\r
+       <li>NoCache filter to deal with broken browsers.\r
+       <li>Shutdown hook, to save the configuration in case of emergency\r
+         (requires jdk1.3 to work, but jdk1.3 is NOT required to run Jigsaw)\r
+       <li>Automatic log rotation.\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed loggers to have a good date for HTTP/0.9 requests on \r
+         dateless replies\r
+       <li>Fixed JigAdmin to correct URI not ended with '/' \r
+         (leading to an error when using jdk1.3)\r
+       <li>Fixed a bug in HTTPFrame leading to modification of the stores\r
+         for every load of a store.\r
+       <li>Fixed AclRealm so that AuthUser state is added to the request\r
+       <li>Fixed JpegHeaders to release the file decriptors on the file\r
+       <li>Fixed ETag generation when a non-file resource is there.\r
+       <li>Loggers fixed, some entries were dropped when buffer was full\r
+       <li>Some servlet parameters were lost in servlet call.\r
+       <li>Fixed SocketClientFactory for more stability and better idle\r
+         connection removal.\r
+       <li>Fixed problem with getServerName() when port is 80\r
+       <li>Fixed return code when servlet is not available\r
+       <li>Fixed HttpBasicConnection to avoid caching IP forever.\r
+       <li>Fixed RequestDispatcher with VirtualHost\r
+       <li>Various fixes for JSP support.\r
+       <li>Fixed ServletPropertyReader for servlet preload.\r
+       <li>Fixed default port recognition in the lookup phase of the proxy\r
+       <li>Fixed synchronized call in HttpBasicServer to avoid deadlock \r
+       <li>bug fixed that was preventing binding on a specific IP\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Added a lenient HTTP headers parsing mode to be kind to\r
+         ill-configured servers\r
+       <li>-host option resurrected\r
+       <li>CgiFrame can reuse the frame config\r
+       <li>JpegHeaders can extract metadata from digital cameras\r
+       <li>NegotiableFrame now uses ordering for Accept:\r
+       <li>Better Statistics Frame\r
+       <li>HttpAccept can have a quality factor\r
+       <li>Jigadmin can do a local reindex (that's what people usually want)\r
+       <li>Relocate and Redirect redone to be more flexible.\r
+       <li>MimeType can now be cloned\r
+       <li>Charset support, independant of the Mime Type\r
+       <li>Added get/setSMaxAge to be nice for caches\r
+       <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+       <li>Statistics frames are now giving more informations\r
+       <li>HTTPFrame can have multiple indexes\r
+       <li>HTTPFrame generate index for generic containers\r
+      </ul>      \r
+\r
+      <h2><a name="2.1.1"></a></h2>\r
+\r
+      <h2>Jigsaw 2.1.1</h2>\r
+      <b>A public release, made on March 6th, 2000.</b>\r
+\r
+      <p>This release is the updated and enhanced version of the 2.1.0 release\r
+       it includes all the new features available in 2.0.4, as well as new \r
+       ones, like servlet 2.2 support.\r
+      </p>\r
+      \r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li><a href="http://www.w3.org/TR/photo-rdf/">Image metadata</a>\r
+         extraction\r
+       <li>Servlet 2.2 support (except for .war as it is too\r
+         "file" oriented).\r
+       <li>Charset support\r
+       <li>new rfc2616 compliant cache (almost finished)\r
+       <li>NoCache filter to deal with broken browsers.\r
+       <li>Shutdown hook, to save the configuration in case of emergency\r
+         (not yet functional, it will work with java2 1.3 and up)\r
+       <li>Automatic log rotation.\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Bug fixed in RealmCatalog and AuthRealm\r
+       <li>internal lookup bug in ProxyFrame\r
+       <li>Fixed bug in the creation of frame arrays\r
+       <li>Fixed an unload notification that was not passed to frames\r
+       <li>Fixed a deadlock in the ResourceStoreManager\r
+       <li>Fixed an extra Content-Type sent in the admin protocol.\r
+       <li>ChunkedInputStream now notifies an EOF if it happens while you\r
+         ask to read for more bytes than available (was potentially waiting\r
+         forever before that!)\r
+       <li>Fixed HttpBasicServer, when the client part has to do a two stage\r
+         HTTP/1.1 request on behalf of a 1.0 client (proxy)\r
+       <li>Fixed ChunkedOutputStream, it is now more optimized and a \r
+         potential char to byte convertion problem has been removed. Also,\r
+         the closing of the stream has been fixed.\r
+       <li>Fixed Base64 encoder and decoder, to avoid a potential char to\r
+         byte conversion error\r
+       <li>modified the attribute name for last modified, as it was\r
+         interacting badly with revalidations\r
+       <li>Fixed MimeType matching\r
+       <li>Fixed bug in HttpMessage, The proxy stopped to forward the\r
+         SetCookie header \r
+       <li>Invalid XML characters are now encoded\r
+       <li>FileAttribute now pickles a String, mandatory for remote admin\r
+       <li>Resource store upgrader redone so that it works for jdk1.2.2\r
+       <li>Fixed bug preventing binding on a specific IP\r
+       <li>Redone Relocate and Redirect frames so that virtual hosts and\r
+         proxies are now supported.\r
+       <li>Fixed static declaration of inner classes in XMLProperties\r
+       <li>fixed HttpAccept to use quality factor as it should\r
+       <li>Fixed LookupState to use ; in the URI during lookup.\r
+       <li>Fixed init code of AttributeHolder\r
+       <li>Fixed race condition in resource store loading\r
+       <li>Fixed getRealPath in ServletContext\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Added a more clever (and expensive) loop check in the Proxy, \r
+         it check for the IP and not for the host only\r
+       <li>Relocate and Redirect redone to be more flexible.\r
+       <li>MimeType can now be cloned\r
+       <li>Charset support, independant of the Mime Type\r
+       <li>Added get/setSMaxAge to be nice for caches\r
+       <li>Automatic log rotation in CommonLogger and ExtendedCommonLogger\r
+       <li>Statistics frames are now giving more informations\r
+       <li>HTTPFrame can have multiple indexes\r
+       <li>HTTPFrame generate index for generic containers\r
+      </ul>      \r
+\r
+      <h2><a name="2.0.4"></a></h2>\r
+\r
+      <h2>Jigsaw 2.0.4</h2>\r
+      <b>A public release, made on January the 21th, 2000.</b>\r
+\r
+      <p>This release is a backport of all enhancements that does not deal\r
+       with XML serialization and also a bufix release.\r
+      </p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>Image metadata extraction\r
+       <li>Servlet.properties parsed at startup\r
+       <li>Charset support\r
+       <li>NoCache filter to deal with broken browsers.\r
+      </ul>      \r
+      \r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Bug fixed in RealmCatalog and AuthRealm\r
+       <li>internal lookup bug in ProxyFrame\r
+       <li>Fixed bug in the creation of frame arrays\r
+       <li>Fixed an unload notification that was not passed to frames\r
+       <li>Fixed a deadlock in the ResourceStoreManager\r
+       <li>Fixed an extra Content-Type sent in the admin protocol.\r
+       <li>ChunkedInputStream now notifies an EOF if it happens while you\r
+         ask to read for more bytes than available (was potentially waiting\r
+         forever before that!)\r
+       <li>Fixed HttpBasicServer, when the client part has to do a two stage\r
+         HTTP/1.1 request on behalf of a 1.0 client (proxy)\r
+       <li>Fixed ChunkedOutputStream, it is now more optimized and a \r
+         potential char to byte convertion problem has been removed. Also,\r
+         the closing of the stream has been fixed.\r
+       <li>Fixed Base64 encoder and decoder, to avoid a potential char to\r
+         byte conversion error\r
+       <li>Fixed cached entry invalidation, it now marks the entry to be\r
+         revalidated next time rather than removing it directly from the\r
+         cache (helps disconnected operation).\r
+       <li>Fixed header update during revalidation not matching 200 or 304\r
+         (ex: auth failed)\r
+       <li>modified the attribute name for last modified, as it was\r
+         interacting badly with revalidations\r
+       <li>JigsawRequestDispatcher in servlet is now cloning the request\r
+         before an include or a forward\r
+       <li>Fixed MimeType matching\r
+       <li>CacheFilter no longer caches replies with Set-Cookies\r
+       <li>Fixed bug in HttpMessage, The proxy stopped to forward the\r
+         SetCookie header \r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Added a more clever (and expensive) loop check in the Proxy, \r
+         it check for the IP and not for the host only\r
+       <li>Better servlet 2.1 support\r
+       <li>Better caching algorithms, (completely redone for 2.1.>0).\r
+      </ul>\r
+\r
+      <h2><a name="2.1.0"></a></h2>\r
+\r
+      <h2>Jigsaw 2.1.0</h2>\r
+      <b>A public release, made on September the 9th, 1999.</b>\r
+\r
+      <p>This release is the first release using the new serialization scheme.\r
+       It allows you to change the way the serialization is done. \r
+       As an exemple, and to provide an easier access to the configuration.\r
+      </p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>New serialization scheme, the current version uses XML, see \r
+         <a href="Doc/Programmer/JigXML.html">the JXML format</a> for more \r
+         information on how to read the serialized files.</li>\r
+       <li>New admin exchange format, using \r
+         <a href="Doc/Programmer/JigXML.html">JXML</a>, it allows you to\r
+         create administration scripts.</li>\r
+       <li>A new upgrader will convert automatically the old Jigsaw stores\r
+         to the new format, the old stores are kept in a backup directory.\r
+      </ul>      \r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>more HttpRange can now be created: "-500","500-", by using -1 as \r
+         the default value</li>\r
+       <li>The request parser now skip the body if sent directly by the client\r
+         when an error occured.</li>\r
+       <li>Servlet are destroyed only if all the connections are closed</li>\r
+       <li>Lister in Jigedit now defines the ACTION in the FORM</li>\r
+       <li>Servlet bug fixed in getResource(), thanks to James Clark.\r
+      </ul>\r
+      \r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Directory listing now ends the URI of the containers with a "/", \r
+         preventing an extra redirect</li>\r
+       <li>Logger now has a property to define the logging directory</li>\r
+      </ul>\r
+\r
+      <h3>Limitations</h3>\r
+      <ul>\r
+       <li>The jdbmResourceStore has not yet been ported, a consequence is\r
+         the lack of CacheFilter in the proxy, but it will be replaced soon\r
+         by a completely new cache.</li>\r
+      </ul>\r
+\r
+      <h2><a name="2.0.3"></a></h2>\r
+\r
+      <h2>Jigsaw 2.0.3</h2>\r
+      <b>A public release, made on July the 27th, 1999.</b>\r
+\r
+      <p>This release is a bugfix version of the 2.0.2, while 2.1.0 will add \r
+       new feature and will completely change the way the resources are \r
+       serialized).\r
+       Meanwhile, there are new functionalities, like the new Acl api, which \r
+       replaces the old auth schemes.</p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>new Acl API, more flexible than the previous auth scheme.</li>\r
+       <li>Redirecter Frame now handles PATH_INFO.</li>\r
+       <li>Charset and language dialects negotiation.</li>\r
+       <li>Added MimeTypeArray and other basic attributes arrays.</li>\r
+      </ul>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Bad request handling is better, previously, HTTP/1.1 without a \r
+         Host: header or a full URI was just closing the connection.</li>\r
+       <li>Servlet indexer can now index servlets with full package name</li>\r
+       <li>Bad permission on a file now fires an exception, rather than\r
+         (possibly) hanging.</li>\r
+       <li>MimeAttribute null balue is now handled in jigadm</li>\r
+       <li>Cache is now sending the right size for null documents</li>\r
+       <li>Servlet's getReader now takes care of the encoding.</li>\r
+       <li>ServletRequest now merges URI parameters and body parameters.</li>\r
+       <li>Fixed ResourceEvent bug (unloaded resources are no longer receiving\r
+         events)</li>\r
+       <li>Cache is no longer blocking for non-sized multipart documents.</li>\r
+       <li>Fixed loop in proxy when the proxy was on port 80 (fixed also if\r
+         it is the default https port)</li>\r
+       <li>Fixed timestamp problem when a file has been modified in the past\r
+         (clock skew is a pain)</li>\r
+       <li>Fixed max-connection and notification of waiting threads during the\r
+         deletion of an old kept-alive connection</li>\r
+       <li>Cached VaryResource are now checking ETag the right way, no more\r
+         304 replies when it was just a cache revalidation.</li>\r
+       <li>Multiple cookies are now sent using multiple headers (ugly but \r
+         cookies ARE ugly).</li>\r
+       <li>Fixed ResourceStoreManager initialization, when another root \r
+         resource was set, it may end up in resource duplication and \r
+         problems while attaching frames/filters, also it was causing \r
+         deletion loops. WARNING! You may have to redo your configuration if \r
+         you changed the root resource!</li>\r
+       <li>Fixed servlet timeout unit</li>\r
+       <li>SSI Frame and servlet interaction fixed (no more chunking in that\r
+         case)</li>\r
+       <li>Logger and port can be changed while the server is running.</li>\r
+       <li>The "No logger" warning is more explicit</li>\r
+      </ul>\r
+\r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>Servlet timeout can be disabled</li>\r
+       <li>Servlet cookie maxage can now be -1 (unlimited)</li>\r
+       <li>Language negotiation has been redone, it now check dialects\r
+         also</li>\r
+       <li>Content negotiation now takes the order into account</li>\r
+       <li>Realms now have a real feeder (administration tool)</li>\r
+       <li>Added bind address so that multiple interfaces can be bound.</li>\r
+       <li>Client garbage collection scheme has been redone, allowing smoother\r
+         handling of clients when load goes up (it means also better\r
+         performances)</li>\r
+       <li>MirrorFrame now tweaks also temporary redirects</li>\r
+       <li>Md5 constructor now allows an encoding string.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+      <h2><a name="2.0.2">Jigsaw 2.0.2</a></h2>\r
+      <b>A public release, made on March the 31th, 1999.</b>\r
+\r
+      <p>This release includes the first version of the new administration tool\r
+       (jigadmin, v2). Along with that, numerous improvement over the old\r
+       version, like servlet API 2.1 support.</p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>Digest Authentication</li>\r
+       <li>Http Extension Framework (HttpExtFrame)</li>\r
+       <li>New JigAdmin. This one should be more intuitive than the other, but\r
+         still, you probably need to understand the design to take best out of\r
+         it.</li>\r
+       <li>JSDK2.1 (Servlet API) support.</li>\r
+       <li>Per servlet timeout is possible</li>\r
+       <li>JNI port of LibUnix, thanks to Roland Mainz</li>\r
+       <li>New logger ExtendedCommonLogger, doing log rotation and using ECLF\r
+         format</li>\r
+       <li>*forbid* can be used as a Container index</li>\r
+       <li>Log file resolver, to do DNS resolution offline</li>\r
+       <li>ServletMapperFrame, used to map a file to a servlet (see the FAQ\r
+         entry about JSP)</li>\r
+      </ul>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>HttpChallenge fix, the byte buffer is now recomputed when it\r
+         changes.</li>\r
+       <li>Redirect fix for virtual hosts</li>\r
+       <li>Relocate fix for virtual hosts</li>\r
+       <li>Frame identifier now used in FrameReference as you may have \r
+         multiple instances of the same class attached to a resource</li>\r
+       <li>ContentLengthInputStream and ChunkedInputStream now throws an\r
+         IOException when an error occurs</li>\r
+       <li>201 Created now generates the right response</li>\r
+       <li>FileAttribute is now sent as a String in the admin protocol to \r
+         avoid automatic conversion of jdk1.2</li>\r
+       <li>When indexing a file with multiple extensions, frames attirbutes\r
+         are now aggregated. <b>It requires the use of the new default \r
+           indexer</b> provided in the distribution, as the Content-Type\r
+         for modifiers (like .fr) is now\r
+         set to *none*</li>\r
+       <li>VirtualHost now remove automatically the ":80" added by some\r
+         robots.</li>\r
+       <li>Extension matching process now does "perfect" match, then case\r
+         insensitive match if desired.</li>\r
+       <li>CgiFrame has now PATH_TRANSLATED defined</li>\r
+       <li>RedirecterFrame now forward the query string as expected.</li>\r
+      </ul>\r
+\r
+      <h3>Improvements</h3>\r
+      <ul>\r
+       <li>index resolution for containers now add Content-Location</li>\r
+       <li>PUT on negotiated resources is handled using ETags</li>\r
+       <li>Users can add environment variable in the CgiFrame \r
+         configuration</li>\r
+       <li>ETag generation is done in one place, so you can overload it.</li>\r
+       <li>URLDecoder updated to use InputStream AND Readers</li>\r
+       <li>ContentTypeIndexer can now use wildcards (well only *) in its mime\r
+         type definitions.</li>\r
+       <li>ThreadCache behaviour near the limit is now the right one, also \r
+         there is a feature to wait for all the thread of the cache.</li>\r
+       <li>PassDirectory can now act as a normal DirectoryResource is the\r
+         pass-target is not set</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0.1"></a>Jigsaw 2.0.1</h2>\r
+      <b>A public release, made on January the 18th, 1999.</b>\r
+\r
+      <p>This release has been done to allow people to use the admin tool \r
+       despite a JDK1.2 bug. So the fixed bug list is quite short!</p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Nasty kludge (creation of an useless object) to prevent bug in \r
+         JDK1.2 classloader</li>\r
+       <li>Garbage collection of old client connection redone.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0.0"></a>Jigsaw 2.0.0</h2>\r
+      <b>A public release, made on December the 24th, 1998.</b>\r
+\r
+      <p>This is the final version of the 2.0 version of <b>Jigsaw</b>. \r
+       This is a bugfix release of the <b>2.0beta3</b>.</p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>DELETE method implemented both on normal resources and on CVS \r
+         resources. By default DELETE is not enabled</li>\r
+       <li>New version of JigEdit (documentation pending)</li>\r
+       <li>JDK1.2 fixes, it now compile gracefully with JDK1.2, which means\r
+         that the usual warnings are thrown.</li>\r
+      </ul>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>HttpCacheControl bug on "no-cache"</li>\r
+       <li>Event model for ResourceFrame fixed</li>\r
+       <li>Deleted variants of a Negotiated Frame are now removed from the\r
+         list of variants</li>\r
+       <li>PageCompile fix for \ under Windows and possible clash on class\r
+         name.</li>\r
+       <li>getCookies method for Servlets</li>\r
+       <li>NegotiatedFrame throw a 404 if no variant are present (after a\r
+         delete)</li>\r
+       <li>Servlets called from SSI don't close the stream any longer.</li>\r
+       <li>AdminReader and PlainRemoteResource are now URLEncoding the URIs\r
+         .</li>\r
+       <li>File system sensitivity check is now working during the lookup.\r
+       </li>\r
+       <li>First access on some resources may return an error as the parent\r
+         was not created, now fixed.</li>\r
+       <li>File Descriptor leak fixed on ugly configurations.</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+\r
+      <p>Documentation is still evolving, and, as always, feedback welcome!</p>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0beta3"></a>Jigsaw 2.0beta3</h2>\r
+      <b>A public release, made on October the 2nd, 1998.</b>\r
+\r
+      <p>This is a bug fix release of the previous <b>2.0beta2.</b></p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>PageCompilation, allow you to do fancy server side includes</li>\r
+       <li>The ZipIndexer allow you to serve files contained in a zip.</li>\r
+       <li>Port of the LabelBureau</li>\r
+       <li>ServletIndexer allow you to index servlet and remove the .class\r
+         automatically</li>\r
+       <li>ProxyDispatcher rules editor, and re-parsing of the rules.</li>\r
+      </ul>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Various bug fixes on servlets</li>\r
+       <li>Properties editable directly in JigAdmin (mICP, proxy dispatcher,\r
+         servlet)</li>\r
+       <li>servlet classloader revamped.</li>\r
+       <li>ProxyFrame lookup bug (inifnite redirect on itself) fixed</li>\r
+       <li>Observable properties now works better.</li>\r
+       <li>Jigadm gives now more feedback during save and such.</li>\r
+       <li>Jigadm crash on latest JDK fixed.</li>\r
+       <li>HTTP/1.1 fixes according to the latest\r
+         draft-ietf-http-v11-spec-rev-05</li>\r
+       <li>Jigsaw client now reuses connections the right way</li>\r
+       <li>Tons of deadlocks and error recovery added in the internal \r
+         handling of the cache of the proxy</li>\r
+       <li>getRequestURI now works according to JSDK's api.</li>\r
+       <li>fixes in the ZipDirectory</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+      <ul>\r
+       <li>The documentation is evolving, but still, constructive comments are\r
+         welcome!</li>\r
+       <li>JigAdmin GUI gives more feedback. Designers, feel free to work\r
+         on the GUI!</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0beta2"></a>Jigsaw 2.0beta2</h2>\r
+      <b>A public release, made on July the 10th, 1998.</b>\r
+\r
+      <p>This is a bug fix release of the previous <b>2.0beta1</b>.</p>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>Complete JSDK/2.0 servlet API support. It even includes session\r
+         tracking.</li>\r
+       <li>Some filters to demonstrate HTTP/1.1 interoperability like the\r
+         UseProxyFilter.</li>\r
+       <li>HourLimiterFilter, to restrict access during some time.</li>\r
+       <li>Content-Type indexers to use all the Content-Type information given in a\r
+         PUT.</li>\r
+      </ul>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Broken resources can now be deleted</li>\r
+       <li>Many HTTP/1.1 fixes according to the\r
+         draft-ietf-http-v11-spec-rev-03.</li>\r
+       <li>Partial Content fixed (it was sending one byte too much)</li>\r
+       <li>Missing Content-Length</li>\r
+       <li>Content-MD5 to ensure end-to-end message integrity check.</li>\r
+       <li>Events within frames and resources now fixed.</li>\r
+       <li>Bug in SSI frame (event related).</li>\r
+       <li>Many Cookies fixes, it is now implementing more things than before.</li>\r
+       <li>Tracking of the "real" root resource.</li>\r
+       <li>some more timeouts to solve the problem of blocked threads</li>\r
+       <li>Fixes in jdbm, to fix the way the buckets were splitted in the\r
+         cache.</li>\r
+       <li>Virtual Hosting was broken when issuing redirects, now fixed with the\r
+         creation of a specific resource: VitrualHostResouce.</li>\r
+       <li>Range requests from cached resources now have the real value.</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+      <ul>\r
+       <li>The documentation! It is not perfect yet, and comments are welcome to\r
+         improve it.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0beta1"></a>Jigsaw 2.0beta1</h2>\r
+      <b>A public release, made on April the 8th, 1998.</b>\r
+\r
+      <p>This is the first complete release of the new Jigsaw, with the <a\r
+         href="Doc/Programmer/design.html">new internal design</a>.</p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+\r
+      <p>There was almost no bug fix in the new resource model of Jigsaw, but there\r
+       was some modification of the HTTP stack, mainly about the handling of the PUT\r
+       method.</p>\r
+\r
+      <h3>New Features</h3>\r
+\r
+      <p>All the resources of the 1.0beta2 has been ported to the new 2.0 version.\r
+       This includes:</p>\r
+      <ul>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/RedirecterFrame.html">RedirecterFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/VirtualHostFrame.html">VirtualHostFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/CgiFrame.html">CgiFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/cvs/CvsFrame.html">CvsFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/frames/CvsFileFrame.html">CvsFileFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/tools/ToolsListerFrame.html">ToolsListerFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/PutListFrame.html">PutListFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/PostableFrame.html">PostableFrame</a></li>\r
+       <li><!-- <a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/map/MapFrame.html"> -->MapFrame<!-- </a> --></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/proxy/ForwardFrame.html">ForwardFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/proxy/ProxyFrame.html">ProxyFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/PasswordEditorFrame.html">PasswordEditorFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/CheckpointFrame.html">CheckpointFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/resources/DirectoryListerFrame.html">DirectoryListerFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/GcStatFrame.html">GcStatFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/StatisticsFrame.html">StatisticsFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/status/ThreadStatFrame.html">ThreadStatFrame</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CookieFilter.html">CookieFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/HeaderFilter.html">HeaderFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/LogFilter.html">LogFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CounterFilter.html">CounterFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/DebugFilter.html">DebugFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/GZIPFilter.html">GZIPFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/PutFilter.html">PutFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/CacheFilter.html">CacheFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/AccessLimitFilter.html">AccessLimitFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/PutSizeFilter.html">PutSizeFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/ErrorFilter.html">ErrorFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigedit/filters/GrepPutFilter.html">GrepPutFilter</a></li>\r
+       <li><a\r
+           href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/filters/ProcessFilter.html">ProcessFilter</a></li>\r
+      </ul>\r
+\r
+      <p>The new <a href="Doc/">documentation</a> is also more complete.</p>\r
+\r
+      <h3>Incompatible changes</h3>\r
+\r
+      <p>To avoid the name length limit on the Mac, the resource files used by\r
+       <b>JigAdmin</b> are now stored in a zip, the old version of <b>JigAdmin</b>\r
+       will not work with this new version, you then need to upgrade both the server\r
+       and the client to do administration.</p>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="2.0alpha1"></a>Jigsaw 2.0alpha1</h2>\r
+      <b>A public release, made on January the 31th, 1998.</b>\r
+\r
+      <p>This 2.0 release is the first release of the new <a\r
+         href="Doc/Programmer/design.html">internal design</a> of Jigsaw.</p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+\r
+      <p>This version as all the bug fixes of the 1.0beta2 about protocol issues.\r
+       Other bug fixes have no meaning here as the internals of Jigsaw have been\r
+       reworked.</p>\r
+\r
+      <h3>Incompatibles changes</h3>\r
+      <ul>\r
+       <li>The name of the classes are now <tt>org.w3c</tt>... instead of\r
+         <tt>w3c</tt>...</li>\r
+       <li>The resources are no longer linked with the protocol, protocole frames\r
+         are added to the raw resources</li>\r
+       <li>The resources are limited, DirectoryResource, FileResource,\r
+         PassDirectory, FramedResource, ContainerResource and\r
+         ExternalContainer.</li>\r
+       <li>The new frames are:\r
+         <ul>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/tools/resources/ProtocolFrame.html">ProtocolFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/HTTPFrame.html">HTTPFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/tools/resources/ResourceFrame.html">ResourceFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/NegotiatedFrame.html">NegotiatedFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/frames/RelocateFrame.html">RelocateFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/ssi/SSIFrame.html">SSIFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/servlet/ServletDirectoryFrame.html">ServletDirectoryFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/servlet/ServletWrapperFrame.html">ServletWrapperFrame</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/auth/AuthFilter.html">AuthFilter</a></li>\r
+           <li><a\r
+               href="http://jigsaw.w3.org/Doc/Programmer/api/org/w3c/jigsaw/auth/GenericAuthFilter.html">GenericAuthFilter</a></li>\r
+         </ul>\r
+       </li>\r
+       <li>The filters are no longer placed on the resource, but on the protocol\r
+         frame.</li>\r
+       <li>The admin server has been reworked to support framed frames.</li>\r
+       <li>Support for active Resources through listeners. (bean-like event\r
+         model).</li>\r
+       <li>Modification of the <b>JigAdmin </b>configuration tool to support\r
+         protocol frames and framed frames.</li>\r
+       <li>The root store of the distribution is no longer needed to start a new\r
+         server, it creates its own store if none are present.</li>\r
+       <li>The ResourceStoreManager has been completely modified, so the old\r
+         configurations for the 1.0beta serie will no longer work. You will have to\r
+         reconfigure your server entirely!</li>\r
+       <li>The form-based configuration is invalid now and has been removed. You\r
+         MUST use the administration server to configure <b>Jigsaw</b></li>\r
+      </ul>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>True reindexing now exists (This is real reindexing rather than deleting\r
+         the resource).</li>\r
+       <li><b>Jigsaw</b> will create the root store if not present.</li>\r
+       <li>Installation program that modifies the property files of the servers\r
+         according to your configuration.</li>\r
+       <li>Partial draft of the <a href="Doc/">new documentation</a>, the next\r
+         release will have a completely new documentation.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0beta2"></a>Jigsaw 1.0beta2</h2>\r
+      <b>A public release, made on January the 31th, 1998.</b>\r
+\r
+      <p>This is a bug fix release of the previous beta release. The purpose of the\r
+       "beta track" is to improve the stability of Jigsaw. For further developments,\r
+       see the 2.0 track.</p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed revalidation mechanism with a <tt>no-cache</tt> directive.</li>\r
+       <li>The update of a cached resource in case of a revalidation is now\r
+         correct.</li>\r
+       <li>The <tt>Max-Forwards</tt> header is now well handled.</li>\r
+       <li>The <tt>PUT</tt> and <tt>POST</tt> methods are now working well on\r
+         HTTP/1.1 servers.</li>\r
+       <li>Fixed a bug in the <tt>Via</tt> header of proxied resources.</li>\r
+       <li>Fixed default adds of HTTP headers that were wrong.</li>\r
+       <li>debug of the classloader for servlets</li>\r
+       <li>Bug fix in the jdbm enumerator.</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+      <ul>\r
+       <li>The indexers can now create "ghost" resources to allow more fancy uses\r
+         of Jigsaw, like shadow icon directories.</li>\r
+       <li>Added the <tt>TRACE</tt> method of HTTP/1.1</li>\r
+       <li>Added the possibility of templates in the indexers</li>\r
+       <li>the GrepPutFilter forbid a PUT of a document containing a specified\r
+         string. Very useful when you edit your website from one server and you\r
+         doesn'y want to allow links to this server.</li>\r
+       <li>Added a DateThread, if you want to speed up Jigsaw a bit (~10% by\r
+         switching loggers).</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0beta1"></a>Jigsaw 1.0beta1</h2>\r
+      <b>A public release, made on September the 1st, 1997.</b>\r
+\r
+      <p>This is just a bug fix release of the latest member beta release.</p>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>Fixed a bug in Content-Length in case of Chunked encoding.</li>\r
+       <li>Added more feedback when a configuration error occurs while using\r
+         <b>JigAdmin</b>.</li>\r
+       <li>Fixed bug in the CacheFilter</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+      <ul>\r
+       <li>Added a new Resource, DirectoryLister, acting like when you access to a\r
+         directory, useful to make a small index.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0beta"></a>Jigsaw 1.0beta</h2>\r
+      <b>A member specific release, made on August the 1st, 1997.</b>\r
+\r
+      <h3>Bug Fixes</h3>\r
+      <ul>\r
+       <li>FileResource now supports the HTTP/1.1 <tt>If-Range</tt> header, and a\r
+         slight bug was fixed in the emitted <tt>Content-Range </tt>header</li>\r
+       <li>The HTTP client side cache filter has been fixed (jdbmResourceStore\r
+         enumration was buggy)</li>\r
+       <li>The Caught Exception trace in errlog has been removed (<i>The trace was\r
+           the bug</i> - tm)</li>\r
+       <li>Fixed a bug in ICP message parsing (will now correctly handle message of\r
+         length exceeding 255 bytes)</li>\r
+       <li>If it manages a shared cache, the CacheFilter will no longer cache\r
+         documents retreive through a request that has an Authorization\r
+         header.</li>\r
+       <li>Fixed a bug in HTTP Date parsing (one of the three date format wasn't\r
+         parsed properly)</li>\r
+       <li>Fixed a bug in ContentLengthInputStream (wrong size after an error on a\r
+         read)</li>\r
+       <li>Fixed a bug in ActiveStream which was the source of empty documents\r
+         feeded by the proxy.</li>\r
+      </ul>\r
+\r
+      <h3>Enhancements</h3>\r
+      <ul>\r
+       <li>Added a property in the <a\r
+           href="User/Reference/w3c.www.protocol.http.icp.ICPFilter.html#w3c.www.protocol.http.icp.disable-cache">ICPFilter</a>\r
+         to disable caching of documents retreived through ICP</li>\r
+       <li>JSDK/1.0 FCS servlet API support</li>\r
+       <li>Powerful JDBC access through server side include.\r
+         <p><br>\r
+           This new feature allow you to querty any JDBC compliant database and embed\r
+           the result within your HTML page. Check the <a\r
+             href="User/api/w3c.jigsaw.ssi.SSIResource.html">SSIResource api</a>.</p>\r
+       </li>\r
+       <li>PICS &amp; JDBC.\r
+         <p><br>\r
+           A new LabelBureau implementation is available. It relies on any JDBC\r
+           compliant database as the storage mechanism for PICS labels, which makes\r
+           it more scaleable than the previous filesystem based approach.</p>\r
+       </li>\r
+       <li>Servlet support has been upgraded to 1.0FCS; Support for automatic\r
+         servlet reloading has also been implemented (Jigsaw will detect that the\r
+         servlet class files have changed and will reload them automatically).</li>\r
+      </ul>\r
+\r
+      <h3>New Features</h3>\r
+      <ul>\r
+       <li>Added a companion server to do the remote configuration.\r
+         <p><br>\r
+           The protocol used to communicate with the Admin servlet hasn't been\r
+           specified yet, and will probably change in the next releases of Jigsaw.\r
+           The client part of the API (<a\r
+             href="User/api/w3c.jigsaw.admin.RemoteResource.html">w3c.jigsaw.jigadm.RemoteResource</a>)\r
+           is unlikely to change though.</p>\r
+       </li>\r
+       <li>A new graphical tool is available to do the configuration of Jigsaw.\r
+         Currently, this allows you to do everything the form based editor could\r
+         do.</li>\r
+       <li>Support for the <a href="User/api/Package-w3c.www.sap.html">SAP</a>\r
+         protocol has been included, as the starting point for multicast\r
+         proxy-to-proxy support. SAP is the Session Announcement Protocol (an\r
+         Internet draft)</li>\r
+       <li>The <a\r
+           href="User/Reference/w3c.jigsaw.proxy.ProxyDirectory.html">ProxyDirectory</a>\r
+         resource now supports ftp tunneling (it won't do caching until someone\r
+         tells me how ftp results can be cached)</li>\r
+       <li>Support for a light multicasted version of ICP now available in the\r
+         proxy, turn your hundreds of useless 5Mo caches into a usefull 50Mo\r
+         collaborative proxy: <i>the net is the computer</i> ! Check the <a\r
+           href="User/Reference/w3c.www.protocol.http.micp.MICPFilter.html">MICPFilter</a>\r
+         client side filter.</li>\r
+       <li>Resource can now be extended through the use of <a\r
+           href="User/api/w3c.tools.store.ResourceFrame.html">ResourceFrame</a>;\r
+         <p><br>\r
+           The notion of HTTP filters has proven usefull enough to be extended for\r
+           non HTTP resources. You can now attach <i>frames</i> to resources that\r
+           describe users for example (such as the w3c.jigsaw.auth.AuthUser).</p>\r
+       </li>\r
+      </ul>\r
+\r
+      <h3>Incompatible API changes</h3>\r
+      <ul>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.forms.FormResource.html">FormResource</a>\r
+         constructor now takes a ResourceContext instead of a httpd instance</li>\r
+       <li>The indexing model haa changed quite a bit.\r
+         <p><br>\r
+           A new indexing model has been designed: each directory can declare how it\r
+           indexes its content through thew use of its own indexer. The indexer API\r
+           is defined in w3c.jigsaw.indexer.</p>\r
+       </li>\r
+      </ul>\r
+\r
+      <h3>Incompatible Configuration Changes</h3>\r
+      <ul>\r
+       <li>Filters pickling as attributes\r
+         <p><br>\r
+           Filters pickling has changed: filters are now just a special resource\r
+           attribute, and follow the general pickling format. They used to be\r
+           special, and that caused lots of troubles. <br>\r
+           <i>Don't redefine the pickle method !!</i></p>\r
+       </li>\r
+       <li>Cache directory hierarchy\r
+         <p><br>\r
+           The cache directory hierarchy has been made multi-directory: cached\r
+           entries are stored in a tree of directories instead of within a single\r
+           directory (lessen the load on the file system by decreasing the acche\r
+           directory size)</p>\r
+       </li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0alpha5"></a>Jigsaw 1.0alpha5</h2>\r
+      <b>A public release made on February the 13th, 1997.</b>\r
+\r
+      <h3>Incompatible changes</h3>\r
+      <ul>\r
+       <li>The <a\r
+           href="User/api/w3c.tools.store.AttributeHolder.html">AttributeHolder</a>\r
+         <a\r
+           href="User/api/w3c.tools.store.AttributeHolder.html#unpickle">unpickle</a>\r
+         and <a\r
+           href="User/api/w3c.tools.store.AttributeHolder.html#unpickleInstance">unpickleInstance</a>\r
+         methods, now take a third boolean parameter, that indicates if the\r
+         resource is to be initialized after unpickling. <b>Warning</b> if you have\r
+         written an 1.0alpha3 resource that redefines this method, you should make\r
+         sure to define the new format for this method (since it's the one that\r
+         gets called by the unpickling engine)</li>\r
+       <li>The <a\r
+           href="User/api/w3c.www.http.HttpReplyMessage.html">HttpReplyMessage</a> <a\r
+           href="User/api/w3c.www.http.HttpReplyMessage.html#setLocation">setLocation</a>\r
+         method now takes an URL, to reflect the fact that HTTP/1.1 specification\r
+         requires an absolute URL here.</li>\r
+       <li>The getURL method of <a\r
+           href="User/api/w3c.jigsaw.resources.HTTPResource.html">HTTPResource</a>\r
+         has now been splitted into two diferent methods:\r
+         <dl>\r
+           <dt>String <a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURLPath">getURLPath</a>()</dt>\r
+           <dd>Returns the path of the URL of the resource (as a String)</dd>\r
+           <dt>URL <a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURL">getURL</a>(request)</dt>\r
+           <dd>Retuns the full URL of the resource. With virtual hosting support,\r
+             it may happen that a resource has differnt URLs according to the\r
+             incomming requests, that's one of the reason for that split.</dd>\r
+         </dl>\r
+       </li>\r
+       <li><a\r
+           href="User/api/w3c.tools.store.AttributeHolderAttribute.html">AttributeHolderAttribute</a>\r
+         semantics has slightly changed: it is up to resources using that kind of\r
+         attribute to initialize the value (if any) of that attribute, by calling\r
+         their <a\r
+           href="User/api/w3c.tools.store.AttributeHolder.html#initialize">initialize</a>\r
+         method with appropriate default values.</li>\r
+       <li>Resources can now refuse unloading, through the new <a\r
+           href="User/api/w3c.tools.store.Resource.html#acceptUnload">acceptUnload</a>\r
+         method. This allows to <i>lock</i> a resource in memory, whatever happens.\r
+         This should be use only with great care.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.tools.store.ResourceStoreHolder.html">ResourceStoreHolder</a>\r
+         interface has changed in the following ways:\r
+         <dl>\r
+           <dt>notifyStoreUnload</dt>\r
+           <dd>Has been renamed to <a\r
+               href="User/api/w3c.tools.store.ResourceStoreHolder.html#acceptUnload">acceptStoreUnload</a>,\r
+             and returns a boolean that indicates wether the store holder is\r
+             willing to get rid of any of its references to the store. If any of\r
+             that store holders return <b>false</b> the store will not ne\r
+             unloaded.</dd>\r
+           <dt><a\r
+               href="User/api/w3c.tools.store.ResourceStoreHolder.html#notifyStoreShutdown">notifyStoreShutdown</a>\r
+             and <a\r
+               href="User/api/w3c.tools.store.ResourceStoreHolder.html#notifyStoreStabilize">notifyStoreStabilize</a></dt>\r
+           <dd>Semantics has been slightly changed: it is nolonger up to the\r
+             store holder to perform the job. The first method is the one in\r
+             which the holder should get rid of all its references to the store\r
+             (by nullifying them), and the second one is just a\r
+             notification.</dd>\r
+         </dl>\r
+       </li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+         <a\r
+           href="User/api/w3c.jigsaw.resources.ContainerResource.html#lookupStore">lookupStore</a>\r
+         method now throws an <a\r
+           href="User/api/w3c.jigsaw.resources.InvalidResourceException.html">InvalidResourceException</a>\r
+         if the resource exists in its store but cannot be restored. In such a\r
+         case, the <a\r
+           href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+         will emit an appropriate error message.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a>\r
+         interface <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandler.html#initialize">initialize</a>\r
+         and <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandler.html#clone">clone</a>\r
+         methods now provide a pointer to the <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandlerManager.html">ServerHandlerManager</a>\r
+         as a first parameter.</li>\r
+       <li>The resource and resource store APIs have been moved outside of\r
+         <b>Jigsaw</b>. After a year of experimentation, this code has proven\r
+         usefull outside the scope of the server itself, that's why we decided to\r
+         move it to a newly created package <a\r
+           href="User/api/Package-w3c.tools.store.html">w3c.tools.store</a>. If you\r
+         have written some resources, the only change for you will be to import\r
+         that new package in your class files. The precise list of classes that has\r
+         moved is:\r
+         <ul>\r
+           <li>Attribute.java</li>\r
+           <li>AttributeHolder.java</li>\r
+           <li>AttributeHolderAttribute.java</li>\r
+           <li>AttributeRegistry.java</li>\r
+           <li>BooleanAttribute.java</li>\r
+           <li>ClassAttribute.java</li>\r
+           <li>DateAttribute.java</li>\r
+           <li>DoubleAttribute.java</li>\r
+           <li>FileAttribute.java</li>\r
+           <li>FilenameAttribute.java</li>\r
+           <li>HolderInitException.java</li>\r
+           <li>IllegalAttributeAccess.java</li>\r
+           <li>IntegerArrayAttribute.java</li>\r
+           <li>IntegerAttribute.java</li>\r
+           <li>InvalidResourceAttribute.java</li>\r
+           <li>LongAttribute.java</li>\r
+           <li>ObjectAttribute.java</li>\r
+           <li>PropertiesAttribute.java</li>\r
+           <li>Resource.java</li>\r
+           <li>ResourceLocker.java</li>\r
+           <li>ResourceShadower.java</li>\r
+           <li>ResourceStore.java</li>\r
+           <li>ResourceStoreHolder.java</li>\r
+           <li>ResourceStoreManager.java</li>\r
+           <li>SimpleResourceStore.java</li>\r
+           <li>StringArrayAttribute.java</li>\r
+           <li>StringAttribute.java</li>\r
+           <li>UnknownResourceException.java</li>\r
+         </ul>\r
+       </li>\r
+       <li>The <a\r
+           href="User/api/w3c.tools.store.ResourceStoreManager.html">ResourceStoreManager</a>\r
+         <a\r
+           href="User/api/w3c.tools.store.ResourceStoreManager.html#unpickleProlog">unpickleProlog</a>\r
+         method no longer returns a boolean. Instead it throws one of:\r
+         <dl>\r
+           <dt><a\r
+               href="User/api/w3c.tools.store.NotAStoreException.html">NotAStoreException</a></dt>\r
+           <dd>If the file preambule doesn't match the store cookie.</dd>\r
+           <dt><a\r
+               href="User/api/w3c.tools.store.InvalidStoreClassException.html">InvalidStoreClassException</a></dt>\r
+           <dd>If the class willing to load that repository doesn't match the\r
+             class that saved it.</dd>\r
+           <dt><a\r
+               href="User/api/w3c.tools.store.InvalidStoreVersionException.html">InvalidStoreVersionException</a></dt>\r
+           <dd>If the repository version doesn't match the loading class\r
+             version.</dd>\r
+         </dl>\r
+       </li>\r
+      </ul>\r
+\r
+      <h3>Compatible changes</h3>\r
+      <ul>\r
+       <li>HTTPResource defines a new <a\r
+           href="User/api/w3c.jigsaw.resources.HTTPResource.html#verify">verify</a>\r
+         method, that might be called by a resource store salvager to check the\r
+         consistency of the resource.For example, file system based resources will\r
+         use that method to check that the file or directory they wrap still exist,\r
+         and delete themselves if not.</li>\r
+       <li><a\r
+           href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+         listing now emits HTML3.2 compliant documents, along with a link to the\r
+         container (when possible)</li>\r
+       <li>The realms catalog no longer uses absolute pathes, it will not however\r
+         upgrade all realms catalog to not using absolute path. Relative path are\r
+         relative to the server's auth directory (typically\r
+         <tt>config/auth</tt>)</li>\r
+       <li>The <tt>w3c.jigsaw.space</tt> property is no longer settable through the\r
+         Admin properties editor. This was an oversight. The only way to set the\r
+         <i>space</i> for a server, is through the <tt>-space</tt> commandline\r
+         toggle (check the <a href="User/Administration/cmdline.html">command line\r
+           page </a>for more details)</li>\r
+      </ul>\r
+\r
+      <h3>New features</h3>\r
+      <ul>\r
+       <li>A new <a\r
+           href="User/Reference/w3c.jigsaw.contrib.SalvagerResource.html">SalvagerResource</a>&nbsp;\r
+         has been written. This resource will walk through the entire resource\r
+         space, to check for:\r
+         <ul>\r
+           <li>Cycles in resource stores (due to <b>Jigsaw</b> bugs)</li>\r
+           <li>Unused resource stores (it garbage collects the stores)</li>\r
+           <li>Synchronize resources with the file system, by calling the <a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#verify">verify</a>\r
+             method of all resources.</li>\r
+         </ul>\r
+       </li>\r
+       <li>A new <a\r
+           href="User/api/w3c.tools.store.ResourceWalker.html">ResourceWalker</a>\r
+         interface is available, along with a <a\r
+           href="User/api/w3c.tools.store.WalkerEngine.html">WalkerEngine</a>. These\r
+         two classes provide respectively an interface to handle the walk, and an\r
+         <i>engine</i> that will trigger call to implementors of previous interface\r
+         while walking through a resource space.</li>\r
+      </ul>\r
+\r
+      <h3>Bug fixes</h3>\r
+\r
+      <p>Numerous bug fixes have been omitted from the list, that list only the main\r
+       ones:</p>\r
+      <ul>\r
+       <li>The <a\r
+           href="User/api/w3c.tools.store.ResourceStoreManager.html">ResourceStoreManager</a>\r
+         had numerous bugs, most of them should now be fixed.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.www.protocol.http.icp.ICPFilter.html">ICPFilter</a>\r
+         HTTP client side filter that implements the Internet Cache Protocol should\r
+         now be compatible with Squid implementations</li>\r
+       <li>CVS has been fixed in numerous ways; the PutList resource should now be\r
+         usable.</li>\r
+       <li>The basic class <a\r
+           href="User/Reference/w3c.jigsaw.auth.AuthFilter.html">AuthFilter</a> now\r
+         performs authentication during lookup, rather then at\r
+         <tt>ingoingFilter</tt>'s time.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0alpha4"></a>Jigsaw 1.0alpha4</h2>\r
+      <b>A member specific release, made on January the 13th, 1997.</b>\r
+\r
+      <h3>Incompatible changes</h3>\r
+      <ul>\r
+       <li>Properties are no longer saved in a single file, each <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a> has\r
+         to manage its own property file. The file is designated through the server\r
+         <i>identifier</i>. This means that older <tt>httpd.props</tt> file should\r
+         be changed by:\r
+         <ul>\r
+           <li>Renaming them to <tt>http-server.props</tt> (the default server\r
+             identifier)</li>\r
+           <li>All properties prefix should be removed (ie all <tt>http-server</tt>\r
+             prefixes)</li>\r
+         </ul>\r
+       </li>\r
+       <li>The AttributeHolder pickling format has changed:\r
+         <ul>\r
+           <li>The FilteredResource pickling method had a bug (it didn't conform to\r
+             the general format)</li>\r
+           <li>Before being dumped, attribute values are prefixed by theire pickled\r
+             length. This allows the unpickleInstance method to skip unknown (ie\r
+             deleted) attributes.</li>\r
+         </ul>\r
+       </li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.daemon.DaemonProperties.html">DaemonProperty</a>\r
+         class is now only used as a property loader. It implements a catalog of\r
+         property sets; each <a\r
+           href="User/api/w3c.jigsaw.daemon.ServerHandler.html">ServerHandler</a>\r
+         instance is responsible for managing its own <a\r
+           href="User/api/w3c.util.ObservableProperties.html">ObservableProperties</a>\r
+         instance.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.HTTPResource.html#getURL">getURL</a>\r
+         method of User <a\r
+           href="User/api/w3c.jigsaw.resources.HTTPResource.html">HTTPResource</a>\r
+         instances now return the full path of the resource within any of the\r
+         server contexts (it used to return the full URL).</li>\r
+       <li>The abstract <a\r
+           href="User/api/w3c.jigsaw.resources.Attribute.html">Attribute</a> class\r
+         now defines a new <a\r
+           href="User/api/w3c.jigsaw.resources.Attribute.html#getPickleLength">getPickleLength</a>\r
+         abstract method (that has to be defined by sub-classes). This method is\r
+         used for the new pickling format of resources, to allow the unpickle\r
+         method to skip unknown attribute values.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.ResourceStore.html">ResourceStore</a>\r
+         API has changed (for ResourceStore implementers only). The <a\r
+           href="User/api/w3c.jigsaw.resources.ResourceStore.html#getVersion">getVersion</a>\r
+         method has been added, and must return the version of the class that\r
+         implements the store.\r
+         <p><br>\r
+           The <a\r
+             href="User/api/w3c.jigsaw.resources.ResourceStore.html#initialize">initialize</a>\r
+           method has a new opaque <i>token</i> parameter, to be used by the store\r
+           when calling back the resource store manager (eg when calling the\r
+           markModified method). The <i>token</i> can be thought of as the identity,\r
+           for the resource store manager, of the store.</p>\r
+       </li>\r
+       <li>The <a\r
+           href="User/api/w3c.www.protocol.http.HttpManager.html">HttpManager</a> can\r
+         now be instantiated several times within the same process. This allows for\r
+         different context for the HTTP client side API. More precisely, the new\r
+         method <a\r
+           href="User/api/w3c.www.protocol.http.HttpManager.html#getManager(Properties)">getManager(Properties\r
+           props)</a> will create a new manager if no other manager has been created\r
+         with that exact property set.</li>\r
+      </ul>\r
+\r
+      <h3>Bug fixes</h3>\r
+      <ul>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.http.CommonLogger.html">CommonLogger</a> now\r
+         initializes its buffer size properly from properties.</li>\r
+       <li>Several fixes in the <a\r
+           href="User/api/w3c.www.protocol.http.cache.CacheFilter.html">CacheFilter</a>\r
+         (protocol implementation errors)</li>\r
+       <li>Bug fixes in the server-side <a\r
+           href="User/api/w3c.jigsaw.http.Request.html">Request</a> object, wouldn't\r
+         allow for non persistent connections.</li>\r
+       <li>The new <a\r
+           href="User/api/w3c.jigsaw.http.socket.SocketClientFactory.html">SocketClientFactory</a>\r
+         now properly deletes old clients if needed (old clients would otherwise\r
+         tend to be priviledged wr to newer ones).</li>\r
+      </ul>\r
+\r
+      <h3>New features</h3>\r
+      <ul>\r
+       <li>Created the <a\r
+           href="User/Reference/w3c.jigsaw.contrib.PasswordEditor.html">w3c.jigsaw.contrib.PasswordEditor</a>\r
+         resource, that allows web site users to change their own password within a\r
+         given realm.</li>\r
+       <li>Created the <a\r
+           href="User/Reference/w3c.jigsaw.contrib.CheckpointResource.html">w3c.jigsaw.contrib.CheckpointResource</a>\r
+         that will backup <b>Jigsaw</b> configuration every once in a while.</li>\r
+       <li>Created the <a\r
+           href="User/Reference/w3c.jigsaw.contrib.LogFilter.html">w3c.jigsaw.contrib.LogFilter</a>\r
+         filter, that allows for very flexible monitoring of an URL sub-space.</li>\r
+       <li>Added UNIX specific command line options, to be able to run\r
+         <b>Jigsaw</b> on port 80, as any user, under any groups. Support also\r
+         provided for chroot'ing <b>Jigsaw</b> under UNIX, check <a\r
+           href="User/FAQ.html#chroot">the FAQ entry</a>.</li>\r
+       <li>The proxy now provides minimal support for ICP, through the <a\r
+           href="User/api/w3c.www.protocol.http.proxy.ICPFilter.html">ICPFilter</a>.</li>\r
+       <li>Sun's servlet API is now supported, servlets can be downloaded from the\r
+         net ! Check the <a\r
+           href="User/api/w3c.jigsaw.servlet.ServletWrapper.html">ServletWrapper</a>\r
+         and <a\r
+           href="User/api/w3c.jigsaw.servlet.RemoteServletWrapper.html">RemoteServletWrapper</a>\r
+         resources.</li>\r
+      </ul>\r
+\r
+      <h3>Compatible API Changes</h3>\r
+      <ul>\r
+       <li>the <a href="User/api/w3c.jigsaw.http.Client.html">Client</a> <a\r
+           href="User/api/w3c.jigsaw.http.Client.html#getOutputStream">getOutputStream</a>\r
+         method now returns a DataOutputStream.</li>\r
+       <li>Revamped ClientPool, Client into abstract classes, etc. Check the new <a\r
+           href="User/api/w3c.jigsaw.http.Client.html">Client</a> and <a\r
+           href="User/api/w3c.jigsaw.http.ClientFactory.html">ClientFactory</a> APIs.\r
+         This dos <i>not</i> affect any of the resources, but a set of properties\r
+         did change in this process. All properties starting with\r
+         <tt>w3c.jigsaw.ClientPool</tt> are now changed, check the <a\r
+           href="User/Reference/w3c.jigsaw.http.socket.SocketConnectionProp.html">SocketConnectionProp</a>\r
+         resource for more infos.</li>\r
+       <li>The <a href="User/api/w3c.jigsaw.http.httpd.html">httpd</a> class now\r
+         has an a new errlog method, to signal error in a homogeneous way from\r
+         resources (it takes a resource and a message as a paragmeter):\r
+         <p><br>\r
+           <tt>errlog(HTTPResource resource, String msg</tt>)</p>\r
+       </li>\r
+       <li>The <a href="User/api/w3c.jigsaw.http.Logger.html#sync">Logger</a>\r
+         interface now define a <tt>sync</tt> method for asking the loggers to\r
+         flush whatever they have back to disk.</li>\r
+       <li>The <a href="User/api/w3c.jigsaw.resources.Resource.html">Resource</a>\r
+         object defines a new <b>store-entry</b> attribute, to be used by the store\r
+         of that resource as a closure (typically caching resource stores have an\r
+         entry for each loaded resource to keep track of lockers, etc). The\r
+         ResourceStore interface has been changed to reflect this: all methods that\r
+         used to take a resource identifier as a parametr can now take the resource\r
+         instead, and find up the entry through that new attribute.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>\r
+         class functionalities has been splitted into two sub-classes:\r
+         <dl>\r
+           <dt><a\r
+               href="User/api/w3c.jigsaw.resources.StoreContainer.html">StoreContainer</a></dt>\r
+           <dd>Defines a basic resource container, that keeps track of its\r
+             children through a resource store. It doesn't know nothing about a\r
+             file system</dd>\r
+           <dt><a\r
+               href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a></dt>\r
+           <dd>Now extends the StoreContainer, and knows how to serve files from\r
+             a file-system.</dd>\r
+         </dl>\r
+       </li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+         for registering children, <a\r
+           href="User/api/w3c.jigsaw.resources.ContainerResource.html#registerResource">registerResource</a>,\r
+         now take as a parameter an HTTPResource instead of a Resource.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.HTTPResource.html#perform">HTTPResource</a>\r
+         perform method has been splitted into three separate stages, to allow for\r
+         more flexible customization of the process of performing a request:\r
+         <dl>\r
+           <dt><a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#filterIn">filterIn</a></dt>\r
+           <dd>Applies all the filters on the way in, before the request gets\r
+             processed. If this method returns a non-null Reply, it is assumed\r
+             that some filter knew how to generate a reply on behalf of the\r
+             target resource (eg a RAMCacheFilter)</dd>\r
+           <dt><a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#dispatch">dispatch</a></dt>\r
+           <dd>Dispatches the well-known HTTP methods (ie GET, POST, PUT, etc) to\r
+             the appropaite Java methods (ie get, post, put...)</dd>\r
+           <dt><a\r
+               href="User/api/w3c.jigsaw.resources.HTTPResource.html#filterOut">filterOut</a></dt>\r
+           <dd>Applies all filters on the way out. If this method returns a\r
+             non-null reply, it is assumed to subsume the original reply (as\r
+             obtained by calling dispatch).</dd>\r
+         </dl>\r
+       </li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0alpha3"></a>Jigsaw 1.0alpha3</h2>\r
+      <b>A public release, made on October 7th, 1996.</b>\r
+\r
+      <p>This release is mainly a bug fix release with regard to the <a\r
+         href="#1.0alpha2">1.0alpha2</a> release.</p>\r
+\r
+      <h3>Bug fixes</h3>\r
+\r
+      <p>Main bug fixes are:</p>\r
+      <ul>\r
+       <li>The HTTP client side code has been reworked. This shouldn't affect users\r
+         of that package, since it is mainly a rewritting of the internals of the\r
+         HttpManager. The main problem was the managing of persistent connections,\r
+         which is now much enhanced. The code was also cleaned up in that\r
+         process.</li>\r
+       <li>The cache garbage collector really works now ! The 1.0alpha2 cache\r
+         garbage collector was just a proof of concept. The new garbage collector\r
+         works by <i>chunking</i> the flow of data being cache through generation\r
+         numbers, which allows for a much more precise garbage collections.</li>\r
+      </ul>\r
+\r
+      <h3>New features</h3>\r
+\r
+      <p>A small set of enhancements has been made too:</p>\r
+      <ul>\r
+       <li>Virtual hosts capabilities have been added, this feature supports only\r
+         the <tt>Host</tt> based version of that feature (which doesn't consume IP\r
+         addresses). More documentation is available <a\r
+           href="User/Reference/w3c.jigsaw.resources.VirtualHostResource.html">here</a>.</li>\r
+       <li>The <a\r
+           href="User/api/w3c.jigsaw.resources.ContainerResource.html">ContainerResource</a>\r
+         is now an abstract class, much more suitable for sub-classing then the <a\r
+           href="User/api/w3c.jigsaw.resources.DirectoryResource.html">DirectoryResource</a>.</li>\r
+       <li>The <a\r
+           href="User/Reference/w3c.jigsaw.proxy.ProxyDirectory.html">ProxyDirectory</a>\r
+         now has a <i>disconnected</i> mode, which allows you to connect your\r
+         laptop from the net, get any numbers of document, disconnect from the net\r
+         to later browse while on a trip. Check it !</li>\r
+       <li>A new <a\r
+           href="User/Reference/w3c.jigsaw.proxy.MirrorDirectory.html">MirrorDirectory</a>&nbsp;\r
+         resource has been added, that allows you to <i>mirror</i> any web site.\r
+         This resources is a nifty subclass of the newly created <a\r
+           href="User/Reference/w3c.jigsaw.proxy.ForwardDirectory.html">ForwardDirectory</a>\r
+         resource.</li>\r
+      </ul>\r
+\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0alpha2"></a>Jigsaw 1.0alpha2</h2>\r
+      <b>A member specific release, made on September 7th, 1996.</b>\r
+\r
+      <p>This member release of <b>Jigsaw</b>, version <b>1.0a2</b> is a snapshot of\r
+       what will be <b>Jigsaw 1.0a3</b>, the next public release. It has lots of\r
+       improvements, and lots of new features that you should check out:</p>\r
+      <dl>\r
+       <dt>HTTP/1.1</dt>\r
+       <dd>The server is now fully HTTP/1.1 compliant, it will still be\r
+         compatible with older, HTTP/1.0 clients.</dd>\r
+       <dt>Caching proxy</dt>\r
+       <dd>This new release includes a caching proxy module, also fully HTTP/1.1\r
+         compliant. The HTTP client side API that is used by this proxy can be\r
+         used as a replacement for the default HTTP Java handler. See the FAQ for\r
+         more infos.</dd>\r
+       <dt>New resources</dt>\r
+       <dd>A set of new resources and filters have been added to the core\r
+         distibution:\r
+         <dl>\r
+           <dt>SSIResource</dt>\r
+           <dd>The server side include resource will handle standard server\r
+             side include commands. It is easily extensible in Java (make sure\r
+             you check our tutorial on how to extend it). This resource is\r
+             extremely powerfull and flexible and also impresively efficient,\r
+             we urge you to have a look at it !</dd>\r
+           <dt>Image maps</dt>\r
+           <dd>A new image map resource has been included in the release. This\r
+             adds image map support within the server in a very efficient\r
+             way.</dd>\r
+           <dt>ErrorFilter</dt>\r
+           <dd>Allows you to redefine all the error messages leaving the\r
+             server, by using internal redirection.</dd>\r
+         </dl>\r
+       </dd>\r
+       <dt>Enhancements</dt>\r
+       <dd>A lots of enhancements has been made to <b>Jigsaw</b> since release\r
+         <b>1.0a1</b>. Among which:\r
+         <dl>\r
+           <dt>Performance tuning</dt>\r
+           <dd>Although not fully tuned yet, this release deal with some of the\r
+             bottlenecks found in older release. Inparticular, the new client\r
+             pool class allows <b>Jigsaw</b> to handle gracefully an increased\r
+             number of simultaneous connections.</dd>\r
+           <dt>Configuration</dt>\r
+           <dd>Has been enhanced in several ways. Check the /Admin directory to\r
+             see them !</dd>\r
+           <dt>CgiResource</dt>\r
+           <dd>The new support for CGI scripts is much more easy to configure\r
+             and use. It also has imrpoved a lot in terms of robustness. It has\r
+             been tested on both UNIX and Windows.</dd>\r
+           <dt>PICS support</dt>\r
+           <dd>The PICS module of <b>Jigsaw</b> has been updated to reflect the\r
+             PICS 1.1 specification.</dd>\r
+         </dl>\r
+       </dd>\r
+      </dl>\r
+      <p></p>\r
+      <hr noshade="noshade" width="50%">\r
+\r
+\r
+      <h2><a name="1.0alpha1"></a>Jigsaw 1.0alpha1</h2>\r
+      <b>The first member and public release, made on May, 1st 1996 and June</b>\r
+\r
+      <p>This was the first available <b>Jigsaw</b> release.</p>\r
+    </div> <!-- body -->\r
+\r
+    <div class="footer">\r
+      <P>\r
+      <HR NOSHADE WIDTH="100%">\r
+      <A HREF="mailto:jigsaw@w3.org">Jigsaw Team</A>\r
+      <BR>$Id: RelNotes.html,v 1.1 2010/06/15 12:29:45 smhuang Exp $\r
+      <P class="policyfooter"> <FONT SIZE=-1>\r
+         <A HREF="/Consortium/Legal/ipr-notice.html#Copyright">Copyright</A>\r
+         &nbsp;&copy;&nbsp; 1997 <A HREF="http://www.w3.org">W3C</A> \r
+         (<A HREF="http://www.lcs.mit.edu">MIT</A>, \r
+         <A HREF="http://www.inria.fr/">INRIA</A>,\r
+         <A HREF="http://www.keio.ac.jp/">Keio</A> ), \r
+         All Rights Reserved. W3C \r
+         <A HREF="/Consortium/Legal/ipr-notice.html#Legal Disclaimer">\r
+           liability,</A>\r
+         <A HREF="/Consortium/Legal/ipr-notice.html#W3C Trademarks">\r
+           trademark</A>,\r
+         <A HREF="/Consortium/Legal/copyright-documents.html">document\r
+           use </A>and\r
+         <A HREF="/Consortium/Legal/copyright-software.html">software\r
+           licensing\r
+         </A>rules apply. Your interactions with this site are in accordance\r
+         with our <A HREF="/Consortium/Legal/privacy-statement.html#Public">\r
+           public</A>\r
+         and <A HREF="/Consortium/Legal/privacy-statement.html#Members">\r
+           Member</A> privacy statements.\r
+       </FONT>\r
+    </div>\r
+  </BODY>\r
+</HTML>\r