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