jetty-8.0.3.v20111011 - 11 October 2011
 + 348978 migrate jetty-http-spi
 + 358649 StdErrLog system properties for package/class logging LEVEL.

jetty-8.0.2.v20111006 - 06 October 2011
 + 336443 add missing comma in DigestAuthenticator string
 + 342161 ScannerTest fails intermittently on Mac OS X
 + 346419 testing HttpClient FDs
 + 353267 Request._parameters initialization bug
 + 353509 jetty-client unit tests are running too long
 + 353627 Basic Auth checks that Basic method has been send
 + 356144 Allow SelectorManager thread priority to be set
 + 356274 Start SSL socket factory in call to open()
 + 357163 jetty 8 ought to proxy jetty8 javadocs
 + 357178 websockets draft 14 support
 + 357188 Send content buffer directly
 + 357209 JSP tag listeners not called
 + 357216 Logging via Log4J does not expand braces in format strings
 + 357240 more half close refinements
 + 357338 remove debug
 + 357672 resolve issue with serializing pojos with mongodb session manager,
   thanks to john simone for the discovery and fix
 + 357959 Include javadoc in distribution
 + 358027 NullPointerException in ResourceHandler with jetty-stylesheet.css
 + 358035 idle time only active if > 0
 + 358147 Add catch for UnknownHostException to fix leaky file descriptor in
   client
 + 358164 Dispatch from servlet to handler
 + 358263 add method for osgi users to register a driver as Class.forName does
   not work for them
 + 358649 StdErrLog system properties for package/class logging LEVEL.
 + 358674 Still allows sslv3 for now
 + 358687 Updated jsp does not scan for system tlds Fixed pattern.
 + 358784 JSP broken on Java 1.5
 + 358925 bit more javadoc on usage
 + 358959 File descriptor leak with UnresolvedAddressException
 + 359309 adjust previous test for servletPath to include pathInfo
 + 359673 updated websocket version handling
 + 359675 Principal != String, fix for issue in property file login manager
 + 360051 SocketConnectionTest.testServerClosedConnection is excluded.
 + 360066 jsps referenced in web.xml <jsp-file> elements do not compile
 + JETTY-1130 Access Sessions from HashSessionIdManager
 + JETTY-1277 Fixed sendRedirect encoding of relative locations
 + JETTY-1322 idle sweeper checks for closed endp
 + JETTY-1377 extra logging for busy selector
 + JETTY-1378 new sys property for the latest jsp-impl to force the use of the
   JDTCompiler when running in OSGi.
 + JETTY-1414 applied to PropertyUserStore
 + JETTY-1415 Start/Stop Server and Client only once in test, code format
 + JETTY-1420 Set Host header for new request in RedirectListener
 + JETTY-1421 Implement RedirectListener.onException,onConnectionFailed
 + JETTY-1423 force connection to be closed returned
 + JETTY-1430 local JNDI contexts don't carry environment
 + JETTY-1434 Add a jsp that exercises jstl.
 + JETTY-1439 space in directory installation path causes classloader problem

jetty-7.5.2.v20111006 - 06 October 2011
 + 336443 add missing comma in DigestAuthenticator string
 + 342161 ScannerTest fails intermittently on Mac OS X
 + 346419 testing HttpClient FDs
 + 353267 Request._parameters initialization bug
 + 353509 jetty-client unit tests are running too long
 + 353627 Basic Auth checks that Basic method has been send
 + 356144 Allow SelectorManager thread priority to be set
 + 356274 Start SSL socket factory in call to open()
 + 357178 websockets draft 14 support
 + 357188 Send content buffer directly
 + 357209 JSP tag listeners not called
 + 357216 Logging via Log4J does not expand braces in format strings
 + 357240 more half close refinements
 + 357338 remove debug
 + 357672 resolve issue with serializing pojos with mongodb session manager,
   thanks to john simone for the discovery and fix
 + 357959 Include javadoc in distribution
 + 358027 NullPointerException in ResourceHandler with jetty-stylesheet.css
 + 358035 idle time only active if > 0
 + 358147 Add catch for UnknownHostException to fix leaky file descriptor in
   client
 + 358164 Dispatch from servlet to handler
 + 358263 add method for osgi users to register a driver as Class.forName does
   not work for them
 + 358649 StdErrLog system properties for package/class logging LEVEL.
 + 358674 Still allows sslv3 for now
 + 358687 Updated jsp does not scan for system tlds Fixed pattern.
 + 358784 JSP broken on Java 1.5
 + 358925 bit more javadoc on usage
 + 358959 File descriptor leak with UnresolvedAddressException
 + 359309 adjust previous test for servletPath to include pathInfo
 + 359673 updated websocket version handling
 + 359675 Principal != String, fix for issue in property file login manager
 + 360051 SocketConnectionTest.testServerClosedConnection is excluded.
 + 360066 jsps referenced in web.xml <jsp-file> elements do not compile
 + JETTY-1130 Access Sessions from HashSessionIdManager
 + JETTY-1277 Fixed sendRedirect encoding of relative locations
 + JETTY-1322 idle sweeper checks for closed endp
 + JETTY-1377 extra logging for busy selector
 + JETTY-1378 new sys property for the latest jsp-impl to force the use of the
   JDTCompiler when running in OSGi.
 + JETTY-1414 applied to PropertyUserStore
 + JETTY-1415 Start/Stop Server and Client only once in test, code format
 + JETTY-1420 Set Host header for new request in RedirectListener
 + JETTY-1421 Implement RedirectListener.onException,onConnectionFailed
 + JETTY-1423 force connection to be closed returned
 + JETTY-1430 local JNDI contexts don't carry environment
 + JETTY-1434 Add a jsp that exercises jstl.
 + JETTY-1439 space in directory installation path causes classloader problem

jetty-8.0.1.v20110908 - 08 September 2011
 + 350634 Added Resource.newResource(File)
 + 356190 fix monodb tests  for changed test api
 + 356428 removed timed waits from test
 + 356693 reduce visibility to webapp of websocket implementations
 + 356695 jetty server jars are provided for websockets
 + 356726 Instead of the sessionDestroyed called sessionCreated after
   invalidate session
 + 356751 Add null protection to ServletContextHandler.doStop
 + 356823 correctly decode close codes.  Send not utf-8 close code.
 + 357058 Acceptor thread blocking

jetty-7.5.1.v20110908 - 08 September 2011
 + 350634 Added Resource.newResource(File)
 + 356190 fix monodb tests  for changed test api
 + 356428 removed timed waits from test
 + 356693 reduce visibility to webapp of websocket implementations
 + 356695 jetty server jars are provided for websockets
 + 356726 Instead of the sessionDestroyed called sessionCreated after
   invalidate session
 + 356751 Add null protection to ServletContextHandler.doStop
 + 356823 correctly decode close codes.  Send not utf-8 close code.
 + 357058 Acceptor thread blocking

jetty-8.0.0.v20110901 - 01 September 2011
 + 352565 cookie httponly flag ignored
 + 353073 better warnings
 + 353285 ServletSecurity annotation ignored
 + 356421 Upgraded websocket to draft 13 support

jetty-7.5.0.v20110901 - 01 September 2011
 + 356421 Upgraded websocket to draft 13 support
 + 353073 better warnings

jetty-7.5.0.RC2 - 30 August 2011
 + 293739 Hide stacks in named log testing. Various other minor log cleanups in
   output.
 + 352188 TestClient correctly processes --host option in jetty-websocket
 + 352222 Moved JmxMonitor functionality from Codehaus
 + 353014 TimeoutExchangeTest run time reduced
 + 353073 deprecated non factory method for websocket clients
 + 353192 Better warning for classes of wrong type
 + 353623 Added new methods to HttpExchange
 + 353624 HttpURI accepts java.net.URI object in constructor
 + 354080 ServletContextHandler allows to replace any subordinate handler when
   restarted
 + 355478 set public to HashedSession, looks like honest mistake and not by
   design to be this way
 + 355854 remove automatic conversion in favor of issuing a warning for
   jetty-web.xml that can't be processed
 + 356128 Moved integration tests from jetty-monitor to test-integration module
 + 356137 Upgrade to jsp implementation version 2.1.3-b10
 + 356144 added SelectorManager.setSelectorPriorityDelta(int)
 + JETTY-1410 handle 1xx in similar fashion to 401s and 302s

jetty-7.5.0.RC1 - 19 August 2011
 + 276670 SLF4J loggers show correct location information
 + 335001 Eliminate expected exceptions from log when running in JBoss
 + 355103 Make allowCredentials default to true in CrossOriginFilter
 + 355162 Allow creating an empty resource collection
 + JETTY-1410 HTTP client handles CONTINUE 100 response correctly
 + JETTY-1414 HashLoginService doesn't refresh realm if specified config
   filename is not an absolute platform specific value

jetty-8.0.0.RC0 - 16 August 2011
 + Merge from jetty-7.4.3
 + Enable annotations by default
 + 352565 cookie httponly flag ignored
 + 353285 ServletSecurity annotation ignored

jetty-8.0.0.M3 - 27 May 2011
 + 324505 Implement API login
 + 335500 request.getParts() throws a NullPointerException
 + 343472 isUserInRole does not prevent subsequent login call.
 + 346180 jsp-2.2 support
 + Updated to jetty-7.4.2.v20110526

jetty-7.5.0.RC0 - 15 August 2011
 + 298502 Handle 200 Connect responses with no content-length
 + 347484 / - > ${/} in some paths in grant codebases
 + 349005 add javadoc detailing the convenience hack of removing leading /'s
 + 351516 Refactored sessions to better support nosql session managers
 + 351576 Do not use deprecated method File.toURL()
 + 352046 Need try/catch around features set in XmlParser
 + 352133 Generally resolve java 1.5isms
 + 352176 xml parsing on startElement should be more flexible on using qName or
   localName
 + 352421 HttpURI paths beginning with '.'
 + 352684 Implemented spinning thread analyzer
 + 352786 GzipFilter fails to pass parameters to GzipResponseWrapper
 + 352999 ExpireTest running too long
 + 353073 WebSocketClient
 + 353095 maven-jetty-plugin: PermGen leak due to javax.el.BeanELResolver
 + 353165 addJars can follow symbolic link jar files
 + 353210 Bundle-Version in o.e.j.o.boot.logback fix
 + 353465 JAASLoginService ignores callbackHandlerClass
 + 353563 HttpDestinationQueueTest too slow
 + 353862 Improve performance of QuotedStringTokenizer.quote()
 + 354014 Content-Length is passed to wrapped response in GZipFilter
 + 354204 Charset encodings property file not used
 + 354397 RewriteRegexRule handles special characters in regex group
 + 354466 Typo in example config of jetty-plus.xml

jetty-7.4.5.v20110725 - 25 July 2011
 + 347484 / - > ${/} in some paths in grant codebases
 + 352133 resolve some 1.5isms
 + 352421 HttpURI paths beginning with '.'
 + 352786 GzipFilter fails to pass parameters to GzipResponseWrapper

jetty-7.4.4.v20110707 - 07 July 2011
 + 308851 Converted all jetty-client module tests to JUnit 4
 + 345268 JDBCSessionManager does not work with maxInactiveInterval = -1
 + 350397 SelectChannelConnector does not shutdown gracefully
 + 350634 Reverted FileResource constructor changes
 + 351039 Forward dispatch should retain locale
 + 351199 HttpServletResponse.encodeURL() wrongly encodes an url without path
   when cookies are disabled
 + JETTY-1153 Default charset/encoding of HTTP POST requests
 + JETTY-1380 Jetty Rewrite example does not work in Hightide

jetty-7.4.3.v20110701 - 01 July 2011
 + 295832 ProxyServlet more extensible and configurable
 + 302566 GZIP handler for embedded Jetty servers
 + 308851 Converted HttpExchangeTest and related tests to JUnit 4
 + 324704 JDBC Session Manager reloading session
 + 332200 Eliminate expected exceptions from log while using
   org.eclipse.jetty.jmx bundle
 + 347468 o.e.j.deploy.binding.GlobalWebappConfigBindingTest fails on Windows
   platform
 + 347617 Dynamically install/update/remove OSGi bundles discovered in the
   contexts folder
 + 347717 start.jar destroys dependent child of --exec
 + 347889 OSGi should follow directive visibility:=reexport for
   META-INF/web-fragments and resources
 + 347898 Close channel on JVM exceptions
 + 348652 jetty.sh starts two unix processes
 + 348935 Close A tag in directory listing
 + 349344 Passing empty query string to UrlEncoded#decodeTo(String, MultiMap,
   String) does not yield an empty map
 + 349738 set buffer sizes for http client in proxy servlet
 + 349870 proxy servlet protect continuation against fast failing exchanges
 + 349896 SCEP supports zero maxIdleTime
 + 349897 draft -09 websockets
 + 349997 MBeanContainer uses weak references
 + 350533 Add "Origin" to the list of allowed headers in CrossOriginFilter
 + 350634 Cleanup FileResource construction
 + 350642 Don't close SCEP during NIOBuffer manipulation
 + JETTY-1342 Recreate selector in change task
 + JETTY-1385 NPE in jetty client's
   HTttpExchange.setRequestContentSource(InputStream)
 + JETTY-1390 RewriteHandler handles encoded URIs

jetty-7.4.2.v20110526
 + 334443 Improve the ability to specify extra class paths using the Jetty
   Maven Plugin
 + 336220 tmp directory is not set if you reload a webapp with
   jetty-maven-plugin
 + 338364 Fixed expires header for set cookies
 + 345729 binding for managing server and system classes globally
 + 345615 Enable SSL Session caching
 + 345763 Source file is updated during the build
 + 345873 Update jetty-ssl.xml to new style
 + 345900 Handle IPv6 with default port
 + 346014 Fixed full HttpGenerator
 + 346124 ServletContext resources paths not resolved correctly when using UNC
   shares
 + 346179 o.e.j.util.ScannerTest fails on MacOS X platform
 + 346181 o.e.j.server.StressTest stalls on MacOS X platform
 + 346998 AbstractLifeCycle.isRunning() returns false if state changes from
   STARTING to STARTED during call
 + 346614 HttpConnection.handle() spins in case of SSL truncation attacks
 + 346764 OrderedGroupBinding deployment binding
 + 347137 Allow SSL renegotiations by default in HttpClient
 + 374174 Consistent mbean names
 + JETTY-1146 Encode jsessionid in sendRedirect
 + JETTY-1342 Recreate selector if wakeup throws JVM bug

jetty-7.4.1.v20110513
 + 288563 remove unsupported and deprecated --secure option
 + 332907 Add context property to ObjectName of JMX MBeans
 + 336056 Ability to override the computation of the ContextHandler to deploy
   the DefaultServlet on the HttpService
 + 340040 Support for a total timeout
 + 343083 Set nested dispatch type and connection
 + 343172 Check package implementor for version
 + 343277 add support for a context white list
 + 343352 make sure that jetty.osgi.boot is activated when a WAB is registered
 + 343482 refactored overlay deployer layout to use WAR layout
 + 343567 HttpClient does not limit the destination's exchange queue
 + 343680 Handle OSGi bundle jars not ending in ".war"
 + 343707 'REQUEST' is printed on console for each incoming HTTP request
 + 343923 flush timeouts applied to outer loop
 + 343936 Session idle calls unbind and remove listeners
 + 344059 Websockets draft-07
 + 344067 Add support for OSGi fragment bundles to add static resources to
   web-bundles
 + 344513 Attempting to set ConfigurationClasses in jetty-web.xml causes NPE
 + 344529 Ability to customize the error handling of the OSGi HttpService
 + 345047 Readded deprecated ScanningAppDeployer#setMonitoredDir
 + 345290 Weak references from SessionIdManager. HashSessionManager cleanup.
 + 345543 Always close endpoint on SSLException
 + 345656 Disambiguate SslContextFactory#validateCerts property
 + 345679 Allow setting an initialized KeyStore as keystore/truststore of
   SslContextFactory
 + 345704 jetty-nested works with forwarded SSL in cloudfoundry
 + JETTY-954 WebAppContext eats any start exceptions instead of stopping the
   server load
 + JETTY-1314 Handle bad URI encodings
 + JETTY-1324 Tested not using CESU-8 instead of UTF-8
 + JETTY-1326 Invoker names not hashCode based
 + JETTY-1343 IllegalArgumentException for bad % encodings
 + JETTY-1347 Updated ServletHander javadoc

jetty-7.4.0.v20110414
 + 342504 Scanner Listener
 + 342700 refine websocket API for anticipated changes
 + JETTY-1362 Set root cause of UnavailableException
 + Various test harness cleanups to avoid random failures

jetty-7.4.0.RC0
 + 324110 Added test harnesses for merging of QueryStrings.
 + 337685 Update websocket API in preparation for draft -07
 + 338627 HashSessionManager.getIdleSavePeriod returns milliseconds instead of
   seconds
 + 338807 Ignore content length in 1xx, 204, 304 responses
 + 338819 Externally control Deployment Manager application lifecycle
 + 339084 Fixed NPE with servlet 3.0 async listener
 + 339150 Validate client certificate when it is used for authentication
 + 339187 In the OSGi manifest of the jetty-all-server aggregate, mark
   javax.annotation as optional
 + 339543 Add configuration options for Certificate Revocation checking
 + 340265 Improve handling of io shutdown in SSL
 + 340621 Added SizedThreadPool interface
 + 340636 HashSessionManager lazy loads all sessions
 + 340838 Update ConnectHandler to perform half closes properly
 + 340878 Integrations should be able to load their own keystores
 + 340920 Dynamically assign RMI registry port for integration testing
 + 340949 Scanner delays file notifications until files are stable
 + 341006 Move inner enums out into separate file
 + 341105 Stack trace is printed for an ignored exception
 + 341145 WebAppContext MBean attribute serverClasses returns empty value
 + 341171 Locking in HttpDestination blocks all requests to the same address
 + 341206 Stop order is wrong in HandlerWrapper
 + 341255 org.eclipse.http usage in AJP/SessionId linkage
 + 341386 Remote close not detected by HttpClient
 + 341394 Remove 'Unavailable' JMX attributes of WebAppContext MBean
 + 341439 Blocking HttpClient does not use soTimeout for timeouts
 + 341561 Exception when adding o.e.j.s.DoSFilter as managed attribute
 + 341692 Fixed deadlock if stopped while starting
 + 341736 Split jetty-nested out of war module
 + 341726 JSONPojoConverter handles characters
 + 341992 Overlayed context deployer
 + 341694 Disable AJP buffer resizing
 + 341850 Protect QTP dump from bad stacks
 + JETTY-1245 Pooled Buffers implementation
 + JETTY-1354 Added jetty-nested
 + Ensure generated fragment names are unique
 + Added extra session removal test

jetty-8.0.0.M2 - 16 November 2010
 + 320073 Reconsile configuration mechanism
 + 321068 JSF2 fails to initialize
 + 324493 Registration init parameter handling null check, setInitParameters
   additive
 + 324505 Request.login method must throw ServletException if it cant login
 + 324872 allow disabling listener restriction from using *Registration
   interfaces
 + 327416 Change meaning of @HandlesTypes in line with latest interpretation by
   JSR315
 + 327489 Change meaning of @MultipartConfig to match servlet spec 3.0
   maintenance release 3.0a
 + 328008 Handle update to Servlet Spec 3 Section 8.2.3.h.ii
 + 330188 Reject web-fragment.xml with same <name> as another already loaded
   one
 + 330208 Support new wording on servlet-mapping and filter-mapping merging
   from servlet3.0a
 + 330292 request.getParts() returns only one part when the name is the same
 + Update to jetty-7.2.1.v20101111

jetty-7.3.1.v20110307 - 07 March 2011
 + 316382 Support a more strict SSL option with certificates
 + 333481 Handle UCS-4 codepoints in decode and encode
 + 335329 Moved blocking timeout handling to outside try catch
 + 336668 policy supports cert validation
 + 336691 Possible wrong length returned by ChannelEndPoint.flush() in case of
   RandomAccessFileBuffer
 + 336781 If xml parser is not validating, turn off external dtd resolution
 + 336793 Tee data filled and flushed from endpoint
 + 337258 Scanner start and end cycle notification
 + 337268 Allow specifying alias of a certificate to be used by SSL connector
 + 337270 Shared Timer for session management
 + 337271 Flush SSL endpoint when dispatch thread held forever
 + 337678 Readded optional async connection mode for HttpClient
 + 337685 Work in progress on draft 6 websockets
 + 337746 Fixed Session deIdle recursion
 + 337784 Improve HashSessionManager for session migrations
 + 337878 Extra tests of security constraints
 + 337896 HttpExchange.timeout does not override HttpClient.timeout
 + 337898 set client HttpConnection max idle time from exchange timeout
 + 338035 Default acceptors 0.25*CPUs and improved selector/acceptor thread
   names.
 + 338068 Leaking ConstraintMappings on redeploy
 + 338092 ProxyServlet leaks memory
 + 338607 Removed managed attributes when context is stopped
 + 338819 Externally control Deployment Manager application lifecycle
 + JETTY-1304 Allow quoted boundaries in Multipart filter
 + JETTY-1317 More elegent handling of bad URIs in requests
 + JETTY-1331 Allow alternate XML configuration processors (eg spring)
 + JETTY-1335 HttpClient's SelectConnector clean-up
 + JETTY-1333 HttpClient _timeout and _soTimeout is messed up
 + JETTY-1337 Workname cannot contain '.'
 + JETTY-1338 Trust default SecureRandom seed

jetty-7.3.0.v20110203 - 03 February 2011
 + JETTY-1259 NullPointerException in JDBCSessionIdManager when invalidating
   session (further update)
 + 296978 standardizing various Testing Util Classes to jetty-test-helper
 + 319178 test failure fix in jetty-util on windows
 + 320457 add SPNEGO support
 + 324505 Implement API login
 + 328872 Multi Jetty xml files not loading if directory is referenced in
   jetty.conf
 + 329746 client option to set just truststore and use strict ssl context
 + 331803 Update XML configuration files to use proper arguments for startup
   command in examples
 + 332179 Fixed formatting of negative dates
 + 332432 Scanner.java now always scanning the canonical form of File
 + 332517 Improved DefaultServlet debug
 + 332703 Cleanup context scope JNDI at stop
 + 332796 Annotations inheritance does not work with jetty7
 + 332799 100% CPU on redeploy session invalidation
 + 332937 Added Destroyable Dumpable interfaces and reworked dependent
   lifecycles, specially of JNDI
 + 333247 fix api compat issue in ConstraintSecurityHandler
 + 333415 wired up HttpInput.available and added test harnesses
 + 333481 Handle UTF-32 codepoints in decode and encode
 + 333608 tlds defined in web.xml are not picked up
 + 333679 Refactored jetty-jmx. Moved mbeans to modules
 + 333717 HttpExchange able to return local address used
 + 333771 System properties are not available inside XML configuration file by
   using the 'property' tag
 + 333875 Monitor public constructor
 + 333892 Improved JVM bug detection
 + 334062 It should be possible to embed in the jetty.home.bundle the ssl
   keystore files
 + 334229 javax-security needs to import the package javax.security.cert in its
   OSGi manifest
 + 334311 fix buffer reuse issue in CachedExchange
 + 335329 Stop SSL spin during handshake and renogotiate
 + 335361 Fixed 'jetty.sh check' to show current PID when JETTY_PID env.
   variable is set
 + 335641 Cleaned up dispatch handling to avoid key.interestOps==0 when
   undispatched
 + 335681 Improve ChannelEndPoint.close() to avoid spinning
 + 335836 Race when updating SelectChannelEndPoint._dispatched

jetty-7.2.2.v20101205 - 05 December 2010
 + JETTY-1308 327109 (re)fixed AJP handling of empty packets
 + 331703 Fixed failing OSGI test TestJettyOSGiBootWithJsp.java on MacOSX
 + 331567 IPAccessHandlerTest failed on MacOS fix
 + 328789 Clean up tmp files from test harnesses
 + 331230 Fixed low thread warnings when acceptors>threadpool
 + 331461 Fixed idle timeout for unflushed HTTP/1.0
 + JETTY-1307 Check that JarFileResource directories end with /
 + 330210 Improve performance of writing large bytes arrays
 + 330208 Support new wording on servlet-mapping and filter-mapping merging
   from servlet3.0a
 + 330188 Reject web-fragment.xml with same <name> as another already loaded
   one
 + 330229 Jetty tries to parse META-INF/*.tld when jsp-api is not on classpath,
   causing DTD entity resoluton to fail
 + 330265 start.jar --stop kills --exec subprocess
 + 330417 Atomic PUT in PutFilter
 + 330419 Reloading webapp duplicates StandardDescriptorProcessor
 + 330686 OSGi: Make org.eclipse.jetty.jsp-2.1 a fragment of
   org.apache.jasper.glassfish
 + 330732 Removed System.err debugging
 + 330764 Command line properties passed to start.jar --exec
 + JETTY-1297 Improved matching of vhosts so that a vhost match has priority

jetty-7.2.1.v20101111 - 11 November 2010
 + 324679 Fixed dedection of write before static content
 + 328199 Ensure blocking connectors always close socket
 + 328205 Improved SelectManager stopping
 + 328306 Serialization of FormAuthentication
 + 328332 Response.getContentType works with setHeader
 + 328523 Fixed overloaded setters in AppProvider
 + 328008 Handle update to Servlet Spec 3 Section 8.2.3.h.ii
 + 328778 Improved javadoc for secure session cookies
 + 328782 allow per connection max idle time to be set
 + 328885 web overrides do not override
 + 328988 Idle saving of session values
 + 329180 Spin check for Selector to stop
 + 329410 Enforce XmlConfiguration properties as Map<String,String>
 + 329602 only clear ServletContext attributes on doStop
 + 329642 Concurrent modification exception in Deployment Manager
 + 329643 Improved deployment of resource collections
 + JETTY-748 Prevent race close of socket by old acceptor threads
 + JETTY-1291 Extract query parameters even if POST content consumed
 + JETTY-1295 Contexts mixed up when hot-deploying on virtual hosts
 + JETTY-1297 Make ServletContext.getContext(String) virtual host aware

jetty-6.1.26 - 10 November 2010
 + JETTY-748 Prevent race close of socket by old acceptor threads
 + JETTY-1239 HTAccessHandler [allow from 127.0.0.1] does not work
 + JETTY-1291 Extract query parameters even if POST content consumed
 + JETTY-1293 Avoid usage of String.split
 + JETTY-1296 Always clear changes list in selectManager

jetty-6.1.26.RC0 - 20 October 2010
 + JETTY-547 Improved usage of shutdownOutput before close.
 + JETTY-912 add per exchange timeout
 + JETTY-1051 offer jetty.skip flag for maven plugin
 + JETTY-1096 exclude maven and plexus classes from jetty plugin
 + JETTY-1248 Infinite loop creating temp MultiPart files
 + JETTY-1264 Idle timer deadlock
 + JETTY-1271 Handle unavailable request
 + JETTY-1278 J2se6 SPI filter handling fix
 + JETTY-1283 Allow JSONPojoConvertorFactory to set fromJSON
 + JETTY-1287 rewrite handler thread safe issue resolved
 + JETTY-1288 info when atypical classloader set to WebAppContext
 + JETTY-1289 MRU cache for filter chains
 + JETTY-1292 close input streams after keystore.load()
 + 325468 Clean work webapp dir before unpack
 + 327109 Fixed AJP handling of empty packets
 + 327562 Implement all X-Forwarded headers in ProxyServlet

jetty-7.2.0.v20101020 - 20 October 2010
 + 289540 added javadoc into distribution
 + 297154 add source distribution artifact
 + 323985 Xmlconfiguration pulls start.jar config properties
 + 324369 Improved handling of multiple versions of
   draft-ietf-hybi-thewebsocketprotocol
 + 326734 Configure Digest maxNonceAge with Security handler init param
 + 327109 Fixed AJP handling of empty packets
 + 327183 Allow better configurability of HttpClient for TLS/SSL
 + 327469 removed needless java6 dependencies
 + 327562 Implement all X-Forwarded headers in ProxyServlet
 + 327601 Multipart Filter handles quoted tokens
 + 327725 Nested ResourceCaches
 + 328199 Ensure blocking connectors always close socket
 + 328205 Improved SelectManager stopping
 + 328273 Added serializable to default user identity
 + JETTY-1288 Info statement when atypical classloader set on WebAppContext
 + JETTY-1289 LRU cache for filter chains

jetty-7.2.0.RC0 - 01 October 2010
 + 314087 Simplified SelectorManager
 + 319334 Concurrent, sharable ResourceCache
 + 319370 WebAppClassLoader.Context
 + 319444 Two nulls are appended to log statements from ContextHanler$Context
 + 320073 Reconsile configuration mechanism
 + 320112 Websocket in aggregate jars
 + 320264 Removed duplicate mime.property entries
 + 320457 Added rfc2045 support to B64Code
 + 321232 BasicAuthenticator ignores bad Authorization header.
 + 321307 HashSessionManager calls passivation listeners.
 + 321730 SelectChannelEndPoint prints to System.err
 + 321735 HttpClient onException called for buffer overflow.
 + 322448 Added jetty-dir.css for directory listings
 + 322575 NPE in HotSwapHandler if old handler null
 + 322683 RewriteHandler thread safety
 + 323196 org.mortbay properties to org.eclipse
 + 323435 MovedContextHandler permanent redirection
 + 323464 IPv6 localhost with no Host header
 + 324110 Merge async dispatch parameters
 + 324158 Durable download or Orbit jars
 + 324260 Jetty-6 continuations handle complete calls
 + 324359 illegal actions on AsyncContext should not change its state.
 + 324360 validate input on getResource since loop logic obscures subclass
   input validation.
 + 324369 Implement draft-ietf-hybi-thewebsocketprotocol-01
 + 324377 Allow dispatch of ServletRequest and ServletResponse
 + 324379 Change content type after getWriter
 + 324501 Fire RequestListener.requestDestroyed in last-to-first order.
 + 324601 Check session expiry on access
 + 324679 Allow filter to write before static content
 + 324811 NPE in Server.dump
 + 324812 restore WebAppContext constructor used by geronimo integration
 + 325072 include to DefaultServlet of missing file throws
   FileNotFoundException
 + 325105 websocket ondisconnect fixed
 + 325128 websocket send during onConnect
 + 325468 Clean work webapp dir before unpack
 + 326612 Handle X-Forwarded-Proto header
 + JETTY-912 added per exchange timeout api
 + JETTY-1063 Plugin problems with spaces in classpath resource references
 + JETTY-1245 Do not use direct buffers with NIO SSL
 + JETTY-1249 Apply max idle time to all connectors
 + JETTY-1250 Parallel start of HandlerCollection
 + JETTY-1256 annotation and jta jars from Orbit
 + JETTY-1259 NullPointerException in JDBCSessionIdManager when invalidating
   session
 + JETTY-1261 errant listener usage in StandardDescriptorProcessor
 + JETTY-1263 JDBCSessionIdManager table creation fails on Oracle
 + JETTY-1265 Reason field option in client response
 + JETTY-1266 Destroy sessions before filters/servlets
 + JETTY-1268 Form Auth saves POST data
 + JETTY-1269 Improve log multithreadedness
 + JETTY-1270 Websocket closed endp protection
 + JETTY-1271 handled unavailable exception
 + JETTY-1279 Make jetty-plus.xml enable plus features for all webapps by
   default
 + JETTY-1281 Create new session after authentication
 + JETTY-1283 JSONPojoConvertorFactory can turn off fromJSON
 + Fix jetty-plus.xml for new configuration names
 + Added ignore to Logger interface
 + Improved debug dump

jetty-7.1.6.v20100715
 + 319519 Warn about duplicate configuration files
 + 319655 Reset HEAD status
 + JETTY-1247 synchronize recylcing of SSL NIO buffers
 + JETTY-1248 fix parsing of bad multiparts
 + JETTY-1249 Apply max idle time to all connectors
 + JETTY-1251 Replace then close selector for JVM bugs

jetty-8.0.0.M1 - 12 July 2010
 + 306350 Ensure jars excluded by ordering are not scanned for annotations
 + JETTY-1224 Change jetty-8 merge rules for fragment descriptors and
   annotations
 + Ensure <absolute-ordering> in web.xml overrides relative <ordering> in
   fragments
 + Ensure empty <absolute-ordering> implies exclusion of all fragments
 + Ensure servlet-api jar class inheritance hierarchy is scanned

jetty-7.1.5.v20100705
 + Update ecj to 3.6 Helios release drop
 + 288194 Add blacklist/whitelist to ProxyServlet and ProxyHandler
 + 296570 EOFException for HttpExchange when HttpClient.stop called.
 + 311550 The WebAppProvider should allow setTempDirectory
 + 316449 Websocket disconnect fix
 + 316584 Exception on startup if temp path has spaces and extractWAR=false
 + 316597 Removed null check and fixed name in Resource#hrefEncodeURI
 + 316970 jetty.sh fails to find JETTY_HOME in standard directories
 + 316973 jetty.sh claims java installation is invalid
 + 316976 removed quotes of JAVA_OPTIONS in jetty.sh
 + 317019 Date HTTP header not sent for HTTP/1.0 requests
 + 317759 Allow roles and constraints to be added after init
 + 317906 OPTIONS correctly handles TRACE
 + 318308 Correct quoting of unicode control characters
 + 318470 unboxing NPE protection in HttpConnection
 + 318551 Optional uncheck Printwriter
 + JETTY-1237 Save local/remote address to be available after close
 + 317007 Unable to run Jetty OSGi when
   -Dosgi.compatibility.bootdelegation=false
 + 316909 CNFE: org.xml.sax.SAXException on org.eclipse.jetty.osgi.boot start
   with jsp fragment
 + 317231 Ability to configure jetty with a fragment bundle that contains
   etc/jetty.xml
 + 319060 Support web-bundles that are not expanded (bundle is zipped)

jetty-6.1.25 - 26 July 2010
 + Jetty-6 is now in maintenance mode.
 + JETTY-1212 Long content lengths
 + JETTY-1214 Avoid ISE when scavenging invalid session
 + JETTY-1223 DefaultServlet: NPE when setting relativeResourceBase and
   resourceBase is not set
 + JETTY-1226 javax.activation needs to be listed in the system classes
 + JETTY-1237 Remember local/remote details of endpoint
 + JETTY-1251 protected against closed selector
 + COMETD-112 if two threads create the same channel, then create events may
   occur after subscribe events
 + 320264 Removed duplicate mime.property entries

jetty-7.1.4.v20100610
 + 298551 SslSocketConnector does not need keystore stream
 + 295715 AbstractSessionManager decoupled from Context
 + 292326 Stop continuations if server is stopped.
 + 292814 Make QoSFilter and DoSFilter JMX manageable
 + 293222 Improve request log to handle/show asynchronous latency
 + 294212 Can not customize session cookie path
 + 301608 Deregister shutdown hooks
 + 302350 org.eclipse.jetty.server.NCSARequestLog is missing JavaDoc
 + 303661 jetty.sh failes if JETTY_HOME is not writeable
 + 304100 Better document JMX setup in jetty-jmx.xml
 + 305300 AsyncContext.start dispatches runnable
 + 314299 Create test harness for JDBCLoginService
 + 314581 Implement the Sec-Websocket handshake
 + 315190 CrossOriginFilter avoid headers not understood by WebSocket
 + 315687 included init script fails to test for JETTY_HOME as empty
 + 315715 Improved Cookie version handling. Server.setMaxCookieVersion
 + 315744 Fixed STOP.PORT and STOP.KEY in start.jar
 + 315748 Removed --fromDaemon from start.jar (replaced with --daemon)
 + 315925 Improved context xml configuration handling
 + 315995 Incorrect package name in system classes list
 + 316119 Fixed maxIdleTime for SocketEndPoint
 + 316254 Implement @DeclareRoles
 + 316334 Breaking change on org.eclipse.jetty.client.HttpExchange
 + 316399 Debug output in MultiPartFilter
 + 316413 Restarting webapp for packed war fails
 + 316557 OSGi HttpService failure due to undeployed context handlers
 + JETTY-547 Delay close after shutdown until request read
 + JETTY-1231 Support context request log handler

jetty-7.1.3.v20100526
 + 296567 HttpClient RedirectListener handles new HttpDestination
 + 297598 JDBCLoginService uses hardcoded credential class
 + 305898 Websocket handles query string in URI
 + 307457 Exchanges are left unhandled when connection is lost
 + 313205 Unable to run test-jdbc-sessions tests
 + 314177 JSTL support is broken
 + 314009 jetty.xml configuration file on command line
 + 314459 support maven3 for builds

jetty-7.1.2.v20100523
 + 308866 Update test suite to JUnit4 - Module jetty-util
 + 312948 Recycle SSL crypto buffers
 + 313196 randomly allocate ports for session test.
 + 313278 Implement octet ranges in IPAccessHandler
 + 313336 secure websockets
 + 314009 updated README.txt
 + Update links to jetty website and wiki on test webapp

jetty-7.1.1.v20100517
 + 302344 Make the list of available contexts if root context is not configured
   optional
 + 304803 Remove TypeUtil Integer and Long caches
 + 306226 HttpClient should allow changing the keystore and truststore type
 + 308857 Update test suite to JUnit4 - Module jetty-jndi
 + 308856 Update test suite to JUnit4 - Module jetty-jmx
 + 308860 Update test suite to JUnit4 - Module jetty-rewrite
 + 308850 Update test suite to JUnit4 - Module jetty-annotations
 + 308853 Update test suite to JUnit4 - Module jetty-deploy
 + 308854 Update test suite to JUnit4 - Module jetty-http
 + 308859 Update test suite to JUnit4 - Module jetty-policy
 + 308858 Update test suite to JUnit4 - Module jetty-plus
 + 308863 Update test suite to JUnit4 - Module jetty-servlet
 + 308855 Update test suite to JUnit4 - Module jetty-io
 + 308862 Update test suite to JUnit4 - Module jetty-server
 + 308867 Update test suite to JUnit4 - Module jetty-webapp
 + 310918 Fixed write blocking for client HttpConnection
 + 312526 Protect shutdown thread initialization during shutdown

jetty-7.1.0 - 05 May 2010
 + 306353 fixed cross context dispatch to root context.
 + 311154 Added deprecated StringBuffer API for backwards compatibility
 + 311554 Protect shutdown thread from Server#doStop
 + 312243 Optimized timeout handling

jetty-7.1.0.RC1 - 05 May 2010
 + 286889 Allow System and Server classes to be set on Server instance and when
   applied to all webapps
 + 291448 SessionManager has isCheckingRemoteSessionIdEncoding
 + 296650 JETTY-1198 reset idle timeout on request body chunks
 + 297104 HTTP CONNECT does not work correct with SSL destinations
 + 306782 Close connection when expected 100 continues is not sent
 + 308848 Update test suite to JUnit4 - Module jetty-ajp
 + 308861 Update test suite to JUnit4 - Module jetty-security
 + 308864 Update test suite to JUnit4 - Module jetty-servlets
 + 308865 Update test suite to JUnit4 - Module jetty-start
 + 308868 Update test suite to JUnit4 - Module jetty-websocket
 + 308869 Update test suite to JUnit4 - Module jetty-xml
 + 309153 Hide extracted WEB-INF/lib when running a non-extracted war
 + 309369 Added WebSocketLoadTest
 + 309686 Fixed response buffers usage
 + 310094 Improved start.jar options handling and configs
 + 310382 NPE protection when WAR is not a file
 + 310562 SslSocketConnector fails to start if excludeCipherSuites is set
 + 310634 Get the localport when opening a server socket.
 + 310703 Update test suite to JUnit4 - Module tests/test-integration
 + 310918 Synchronize content exchange
 + 311154 Use Appendable in preference to StringBuilder/StringBuffer in APIs
 + 311362 Optional org.eclipse.jetty.util.log.stderr.SOURCE
 + JETTY-1030 Improve jetty.sh script
 + JETTY-1142 Replace Set-Cookies with same name

jetty-7.1.0.RC0 - 27 April 2010
 + 294563 Websocket client connection
 + 297104 Improve handling of CONNECT method
 + 306349 ProxyServlet does not work unless deployed at /
 + 307294 Add AbstractLifeCycle.AbstractLifeCycleListener implementation
 + 307847 Fixed combining mime type parameters
 + 307898 Handle large/async websocket messages
 + 308009 ObjectMBean incorrectly casts getTargetException() to Exception
 + 308420 convert jetty-plus.xml to use DeploymentManager
 + 308925 Protect the test webapp from remote access
 + 309466 Removed synchronization from StdErrLog
 + 309765 Added JSP module
 + 310051 _configurationClasses now defaults to null in WebAppContext
 + 310094 Improved start.jar usage and config files
 + 310431 Default ErrorHandler as server Bean
 + 310467 Allow SocketConnector to create generic Connection objects
 + 310603 Make Logger interface consistent
 + 310605 Make a clean room implementation of the JSP logger bridge
 + Add AnnotationConfiguration to jetty-plus.xml
 + Fix jetty-plus.xml reference to addLifeCycle
 + JETTY-1200 SSL NIO Endpoint wraps non NIO buffers
 + JETTY-1202 Use platform default algorithm for SecureRandom
 + Merged 7.0.2.v20100331
 + Add NPE protection to ContainerInitializerConfiguration
 + Temporarily remove jetty-osgi module to clarify jsp version compatibility
 + JETTY-1212 handle long content lengths
 + JETTY-1214 avoid ISE when scavenging invalid session
 + JETTY-903 Stop both caches

jetty-7.0.2.v20100331 - 31 March 2010
 + 297552 Don't call Continuation timeouts from acceptor tick
 + 298236 Additional unit tests for jetty-client
 + 306783 NPE in StdErrLog when Throwable is null
 + 306840 Suppress content-length in requests with no content
 + 306880 Support for UPGRADE in HttpClient
 + 306884 Suspend with timeout <=0 never expires
 + 306782 httpbis interpretation of 100 continues. Body never skipped
 + 307589 updated servlet 3.0 continuations for final API
 + Take excess logging statements out of startup
 + Ensure webapps with no WEB-INF don't scan WEB-INF/lib
 + Allow Configuration array to be set on Server instance for all web apps

jetty-6.1.24 - 21 April 2010
 + JETTY-903 Stop both caches
 + JETTY-1198 reset idle timeout on request body chunks
 + JETTY-1200 SSL NIO Endpoint wraps non NIO buffers
 + JETTY-1211 SetUID loadlibrary name and debug
 + 308925 Protect the test webapp from remote access
 + COMETD-99 ClientImpl logs exceptions in listeners with "debug" level
 + COMETD-100 ClientImpl logs "null" as clientId
 + COMETD-107 Reloading the application with reload extension does not fire
   /meta/connect handlers until long poll timeout expires
 + Upgraded to cometd 1.1.1 client

jetty-6.1.23 - 02 April 2010
 + JSON parses NaN as null
 + Updated JSP to 2.1.v20091210
 + COMETD-28 Improved concurrency usage in Bayeux and channel handling
 + COMETD-46 reset ContentExchange content on resend
 + COMETD-58 Extension.rcv() return null causes NPE in
   AbstractBayeux.PublishHandler.publish
 + COMETD-59 AcknowledgeExtension does not handle null channel in Message
 + COMETD-62 Delay add listeners until after client construction
 + 296569 removeLifeCycleListener() has no effect
 + 292800 ContextDeployer - recursive setting is undone by FilenameFilter
 + 300178 HttpClients opens too many connections that are immediately closed
 + 304658 Inconsistent Expires date format in Set-Cookie headers with maxAge=0
 + 304698 org.eclipse.jetty.http.HttpFields$DateGenerator.formatCookieDate()
   uses wrong (?) date format
 + 306331 Session manager is kept after call to doScope
 + 306840 suppress content-length in requests without content
 + Remove references to old content in HttpClient client tests for www.sun.com
 + JETTY-875 Allow setting of advice field in response to Handshake
 + JETTY-983 Range handling cleanup
 + JETTY-1133 Handle multiple URL ; parameters
 + JETTY-1134 BayeuxClient: Connect msg should be sent as array
 + JETTY-1149 transient should be volatile in AbstractLifeCycle
 + JETTY-1153 System property for UrlEncoded charset
 + JETTY-1155 HttpConnection.close notifies HttpExchange
 + JETTY-1156 SSL blocking close with JVM Bug busy key fix
 + JETTY-1157 Don't hold array passed in write(byte[])
 + JETTY-1158 NPE in StdErrLog when Throwable is null
 + JETTY-1161 An Extension that measures round-trip delay for cometd messages.
 + JETTY-1162 Add support for async/sync message delivery to BayeuxClient
 + JETTY-1163 AJP13 forces 8859-1 encoding
 + JETTY-1168 Don't hold sessionIdManager lock when invalidating sessions
 + JETTY-1170 NPE on client when server-side extension returns null
 + JETTY-1174 Close rather than finish Gzipstreams to avoid JVM leak
 + JETTY-1175 NPE in TimesyncExtension
 + JETTY-1176 NPE in StatisticsExtension if client is null
 + JETTY-1177 Allow error handler to set cacheControl
 + JETTY-1178 Make continuation servlet to log the incoming JSON in case of
   parsing errors
 + JETTY-1180 Extension methods are wrongly called
 + JETTY-1182 COMETD-76 do not lock client while sending messages.
 + JETTY-1183 AcknowledgedMessagesClientExtension does not handle correctly
   message resend when client long polls again
 + JETTY-1186 Better document JMX setup in jetty-jmx.xml
 + JETTY-1188 Null old jobs in QueuedThreadPool
 + JETTY-1191 Limit size of ChannelId cache
 + JETTY-1192 Fixed Digested POST and HttpExchange onRetry
 + JETTY-1193 Exception details are lost in AbstractCometdServlet.getMessages
 + JETTY-1195 Coalesce buffers in ChannelEndPoint.flush()
 + JETTY-1196 Enable TCP_NODELAY by default in client connectors
 + JETTY-1197 SetUID module test fails when using Java 1.6 to build
 + JETTY-1199 FindBugs cleanups
 + JETTY-1205 Memory leak in browser-to-client mapping
 + JETTY-1207 NPE protection in FormAuthenticator
 + JETTY-1202 Use platfrom default algorithm for SecureRandom

jetty-7.0.2.RC0
 + JSON parses NaN as null
 + 290765 Reset input for HttpExchange retry.
 + 292799 WebAppDeployer - start a started context?
 + 292800 ContextDeployer - recursive setting is undone by FilenameFilter
 + 294799 when configuring a webapp, don't look for WEB-INF/jetty6-web.xml
 + 296569 removeLifeCycleListener() has no effect
 + 296765 JMX Connector Server and ShutdownThread
 + 297421 Hide server/system classes from WebAppClassLoader.getResources
 + 297783 Handle HEAD reponses in HttpClient
 + 298144 Unit test for jetty-client connecting to a server that uses Basic
   Auth
 + 298145 Reorganized test harness to separate the HTTP PUT and HTTP GET test
   URLs
 + 298234 Unit test for jetty-client handling different HTTP error codes
 + 298667 DeploymentManager uses ContextProvider and WebAppProvider
 + 299455 Enum support in JSONPojoConvertor
 + 300178 HttpClients opens too many connections that are immediately closed
 + 300733 Jars from lib/ext are not visible for my web application
 + 300933 AbstractConnector uses concurrent objects for stats
 + 301089 Improve statistics available in StatisticsHandler and
   AbstractConnector
 + 302018 Improve statistics available in AbstractSessionHandler
 + 302198 Rename HttpClient authorization classes to Authentication
 + 302244 invalid configuration boolean conversion in FormAuthenticator
 + 302246 redirect loop using form authenticator
 + 302556 CrossOriginFilter does not work correctly when
   Access-Control-Request-Headers header is not present
 + 302669 WebInfConfiguration.unpack() unpacks WEB-INF/* from a
   ResourceCollection, breaking JSP reloading with ResourceCollections
 + 303526 Added include cyphers
 + 304307 Handle ;jsessionid in FROM Auth
 + 304532 Skip some tests on IBM JVMs until resolved
 + 304658 Inconsistent Expires date format in Set-Cookie headers with maxAge=0
 + 304698 org.eclipse.jetty.http.HttpFields$DateGenerator.formatCookieDate()
   uses wrong (?) date format
 + 304781 Reset HttpExchange timeout on slow request content.
 + 304801 SSL connections FULL fix
 + 306330 Flush filter chain cache after Invoker servlet
 + 306331 Session manager is kept after call to doScope
 + JETTY-776 Make new session-tests module to concentrate all reusable session
   clustering test code
 + JETTY-910 Allow request listeners to access session
 + JETTY-983 Range handling cleanup
 + JETTY-1151 JETTY-1098 allow UTF-8 with 0 carry bits
 + JETTY-1153 System property for UrlEncoded charset
 + JETTY-1155 HttpConnection.close notifies HttpExchange
 + JETTY-1156 SSL blocking close with JVM Bug busy key fix
 + JETTY-1157 Don't hold array passed in write(byte[])
 + JETTY-1163 AJP13 forces 8859-1 encoding
 + JETTY-1177 Allow error handler to set cacheControl
 + JETTY-1179 Persistant session tables created on MySQL use wrong datatype
 + JETTY-1184 shrink thread pool even with frequent small jobs
 + JETTY-1133 Handle multiple URL ; parameters
 + JETTY-1174 Close rather than finish Gzipstreams to avoid JVM leak
 + JETTY-1192 Fixed Digested POST
 + JETTY-1199 FindBugs cleanups
 + COMETD-46 reset ContentExchange response content on resend
 + Added IPAccessHandler
 + Updated Servlet3Continuation to final 3.0.20100224
 + 305997 Coalesce buffers in ChannelEndPoint.flush()
 + 306028 Enable TCP_NODELAY by default in client connectors <<<<<<< HEAD

jetty-8.0.0.M0 - 28 February 2010
 + Updated servlet 3.0 spec 20100224
 + Merged 7.0.1.v20091116
 + Updated to cometd 1.0.1

jetty-7.0.1.v20091125 - 25 November 2009
 + =======

jetty-7.0.1.v20091125 - 25 November 2009
 + >>>>>>> origin/master
 + 274251 DefaultServlet supports exact match mode.
 + 288401 HttpExchange.cancel() Method Unimplemented
 + 289027 deobfuscate HttpClient SSL passwords
 + 289265 Test harness for async input
 + 289959 Improved ContextDeployer configuration
 + 289960 start.jar assumes command line args are configs
 + 291019 Fix default DEBUG option; "-D.DEBUG=true" now works
 + 291340 Race condition in onException() notifications
 + 291543 make bin/*.sh scripts executable in distribution
 + 291589 Update jetty-rewrite demo
 + 292642 Fix errors in embedded Jetty examples
 + 292825 Continuations ISE rather than ignore bad transitions
 + 292546 Proactively enforce HttpClient idle timeout
 + 293222 Improved StatisticsHandler for async
 + 293506 Unable to use jconsole with Jetty when running with security manager
 + 293557 Add "jad" mime mapping
 + 294154 Patched jetty-osgi
 + 294224 HttpClient timeout setting has no effect when connecting to host
 + 294345 Support for HTTP/301 + HTTP/302 response codes
 + 294563 Initial websocket implementation
 + JETTY-937 More JVM bug work arounds. Insert pause if all else fails
 + JETTY-983 Send content-length with multipart ranges
 + JETTY-1114 unsynchronised WebAppClassloader.getResource(String)
 + JETTY-1121 Merge Multipart query parameters
 + JETTY-1122 Handle multi-byte utf that causes buffer overflow
 + JETTY-1125 TransparentProxy incorrectly configured for test webapp
 + JETTY-1129 Filter control characters out of StdErrLog
 + JETTY-1135 Handle connection closed before accepted during JVM bug work
   around
 + JETTY-1144 fixed multi-byte character overflow
 + JETTY-1148 Reset partially read request reader.
 + COMETD-34 Support Baeyux MBean
 + Fixed XSS issue in CookieDump demo servlet.
 + Improved start.jar usage text for properties
 + Promoted Jetty Centralized Logging from Sandbox
 + Promoted Jetty WebApp Verifier from Sandbox
 + Refactored continuation test harnessess
 + Fixed client abort asocciation
 + CQ-3581 jetty OSGi contribution
 + Moved centralized logging and verifier back to sandbox
 + CVE-2009-3555 Prevent SSL renegotiate for SSL vulnerability
 + 295421 Cannot reset() a newly created HttpExchange: IllegalStateException 0
   => 0
 + 295562 CrossOriginFilter does not work with default values in Chrome and
   Safari

jetty-7.0.0.v20091005 - 05 October 2009
 + 291340 Race condition in onException() notifications

jetty-6.1.21 - 22 September 2009
 + JETTY-719 Document state machine of jetty http client
 + JETTY-933 State == HEADER in client
 + JETTY-936 Improved servlet matching and optimized
 + JETTY-1038 ChannelId.isParentOf returns the wrong result
 + JETTY-1061 Catch exceptions from cometd listeners
 + JETTY-1072 maven plugin handles context path not as documented
 + JETTY-1080 modified previous fix for windows
 + JETTY-1084 HEAD command not setting content-type in response under certain
   circumstances
 + JETTY-1090 resolve inifinte loop condition for webdav listener
 + JETTY-1092 MultiPartFilter can be pushed into infinite loop
 + JETTY-1093 Request.toString throws exception when size exceeds 4k
 + JETTY-1098 Default form encoding is UTF8
 + JETTY-1099 Improve cookie handling in BayeuxClient
 + JETTY-1100 extend setuid feature to allow setting max open file descriptors
 + JETTY-1102 Wrong usage of deliver() in private chat messages
 + JETTY-1108 SSL EOF detection
 + JETTY-1109 Improper handling of cookies in Terracotta tests
 + JETTY-1112 Response fails if header exceeds buffer size
 + JETTY-1113 IllegalStateException when adding servlet filters
   programmatically
 + JETTY-1114 Unsynchronize webapp classloader getResource
 + 282543 HttpClient SSL buffer size fix
 + 288055 fix jetty-client for failed listener state machine
 + 288153 reset exchange when resending
 + 288182 PUT request fails during retry
 + Fix DefaultServletTest for windows
 + Update Jetty implementation of com.sun.net.httpserver.*
 + Include tmp directory sweeper in build
 + Streamline jetty-jboss build, update sar to QueuedThreadPool

jetty-7.0.0.RC6 - 21 September 2009
 + Fixed XSS issue in CookieDump demo servlet.
 + 289958 StatisticsServlet incorrectly adds StatisticsHandler
 + 289960 start.jar assumes command line args are configs
 + 290081 Eager consume LF after CR
 + 290761 HttpExchange isDone handles intercepted events.
 + JETTY-719 Document state machine of jetty http client
 + JETTY-780 CNFE during startup of webapp with spring-context >= 2.5.1
 + JETTY-936 274251 Improved servlet matching and optimized'
 + JETTY-1080 modify previous fix to work on windows
 + JETTY-1084 HEAD command not setting content-type in response under certain
   circumstances
 + JETTY-1086 Use UncheckedPrintWriter & cleaned up HttpStatus.Code usage
 + JETTY-1090 resolve potential infinite loop with webdav listener
 + JETTY-1092 MultiPartFilter can be pushed into infinite loop
 + JETTY-1093 Request.toString throws exception when size exceeds 4k
 + JETTY-1098 Default form encoding is UTF8
 + JETTY-1101 Updated servlet3 continuation constructor
 + JETTY-1105 Custom error pages aren't working
 + JETTY-1108 SSL EOF detection
 + JETTY-1112 Response fails if header exceeds buffer size
 + JETTY-1113 IllegalStateException when adding servlet filters
   programmatically
 + 280723 Add non blocking statistics handler
 + 282543 HttpClient SSL buffer size fix
 + 283357 org.eclipse.jetty.server.HttpConnectionTest exceptions
 + 288055 jetty-client fails to resolve failed resolution attempts correctly
 + 288153 jetty-client resend doesn't reset exchange
 + 288466 LocalConnector is not thread safe
 + 288514 AbstractConnector does not handle InterruptedExceptions on shutdown
 + 288772 Failure to connect does not set status to EXCEPTED
 + 289146 formalize reload policy functionality
 + 289156 jetty-client: no longer throw runtime exception for bad authn details
 + 288182 PUT request fails during retry
 + 289221 HttpExchange does not timeout when using blocking connector
 + 289285 org.eclipse.jetty.continuation 7.0.0.RC5 imports the
   org.mortbay.util.ajax package
 + 289686 HttpExchange.setStatus() has too coarse synchronization
 + Tweak DefaultServletTest under windows
 + Copy VERSION.txt to distro
 + Remove printlns from jetty-plus

jetty-6.1.20 - 27 August 2009
 + JETTY-838 Don't log and throw
 + JETTY-874 Better error on full header.
 + JETTY-960 Support ldaps
 + JETTY-1046 maven-jetty-jspc-plugin keepSources takes affect only in
   packageRoot
 + JETTY-1057 XSS error page
 + JETTY-1065 Add RedirectRegexRule to provide match/replace/group redirect
   support
 + JETTY-1066 Send 400 error for request URI parse exceptions
 + JETTY-1068 Avoid busy flush of async SSL
 + JETTY-1069 Adjust Bayeux Java client backoff algorithm
 + JETTY-1070 Java Bayeux Client not sending /meta/disconnect on stop
 + JETTY-1074 JMX thread manipulation
 + JETTY-1077 HashSSORealm shares Principals between UserRealms
 + JETTY-1078 Automatic JSON Pojo Conversion
 + JETTY-1079 ResourceCollection.toString() can throw IllegalStateException
 + JETTY-1080 Ignore files that would be extracted outside the destination
   directory when unpacking WARs
 + JETTY-1081 Handle null content type in GzipFilter
 + JETTY-1084 Disable GzipFilter for HEAD requests
 + JETTY-1085 Allow url sessionID if cookie invalid
 + JETTY-1086 Added UncheckedPrintWriter to avoid ignored EOFs
 + JETTY-1087 Chunked SSL non blocking input
 + JETTY-1098 Upgrade jsp to SJSAS-9_1_1-B60F-07_Jan_2009
 + 283513 Check endp.isOpen when blocking read
 + 283818 fixed merge of forward parameters
 + 285006 Fixed NPE in AbstractConnector during shutdown
 + 286535 ContentExchange status code
 + 286911 Clean out cache when recycling HTTP fields
 + COMETD-7 max latency config for lazy messages
 + Added getSubscriptions to cometd client
 + Made unSubscribeAll public on cometd client
 + Removed clearing of queue in unSubscribeAll for cometd client
 + Update test-jndi and test-annotation examples for atomikos 3.5.5
 + Clarified cometd interval timeout and allow per client intervals
 + Update Main.main method to call setWar
 + Added DebugHandler

jetty-7.0.0.RC5 - 27 August 2009
 + 286911 Clean out cache when recycling HTTP fields
 + JETTY-838 Don't log and throw
 + JETTY-874 Better header full warnings
 + JETTY-960 Support for ldaps
 + JETTY-1081 Handle null content type in GzipFilter
 + JETTY-1084 Disable GzipFilter for HEAD requests
 + JETTY-1085 Allow url sessionID if cookie invalid
 + JETTY-1086 Added UncheckedPrintWriter to avoid ignored EOFs
 + JETTY-1087 Chunked SSL non blocking input
 + 287496 Use start.ini always and added --exec
 + 287632 FilterContinuations for blocking jetty6

jetty-6.1.19 - 01 July 2009
 + JETTY-799 shell script for jetty on cygwin
 + JETTY-863 Non blocking stats handler
 + JETTY-937 Further Improvements for sun JVM selector bugs
 + JETTY-970 BayeuxLoadGenerator latency handling
 + JETTY-1011 Grizzly uses queued thread pool
 + JETTY-1028 jetty:run plugin should check for the web.xml from the overlays
   if not found in src/main/webapp/WEB-INF/
 + JETTY-1029 Handle quoted cookie paths
 + JETTY-1031 Handle large pipeline
 + JETTY-1033 jetty-plus compiled with jdk1.5
 + JETTY-1034 Cookie parsing
 + JETTY-1037 reimplemented channel doRemove
 + JETTY-1040 jetty.client.HttpConnection does not handle non IOExceptions
 + JETTY-1042 Avoid cookie reuse on shared connection
 + JETTY-1044 add commons-daemon support as contrib/start-daemon module
 + JETTY-1045 Handle the case where request.PathInfo() should be "/*"
 + JETTY-1046 maven-jetty-jspc-plugin keepSources takes affect only in
   packageRoot
 + JETTY-1047 Cometd client can grow cookie headers
 + JETTY-1048 Default servlet can handle partially filtered large static
   content
 + JETTY-1049 Improved transparent proxy usability
 + JETTY-1054 Avoid double deploys
 + JETTY-1055 Cookie quoting
 + JETTY-1057 Error page stack trace XSS
 + JETTY-1058 Handle trailing / with aliases on
 + JETTY-1062 Don't filter cometd message without data

jetty-7.0.0.RC4 - 18 August 2009
 + 286185 Implement ability for JSON implementation to automatically register
   convertors
 + Added discoverable start options
 + 286535 ContentExchange status code
 + 285891 SessionAuthentication is serializable
 + JETTY-1079 ResourceCollection.toString
 + 279820 Fixed HotSwapHandler
 + JETTY-1080 Ignore files that would be extracted outside the destination
   directory when unpacking WARs
 + JETTY-1057 XSS error page

jetty-7.0.0.RC3 - 07 August 2009
 + 277403 remove system properties
 + JETTY-1074 JMX thread manipulation
 + Improved deferred authentication handling
 + 285697 extract parameters if dispatch has query
 + 282447 concurrent destinations in HttpClient
 + 283172 fix Windows build, broken on directory creation with the
   DefaultServlet
 + 283375 additional error-checking on SSL connector passwords to prevent NPE
 + 283513 Check endp.isOpen when blocking read

jetty-7.0.0.RC2 - 29 June 2009
 + 283844 Webapp / TLD errors are not clear
 + 283375 improved extensibility of SSL connectors
 + 283818 fixed merge of forward parameters
 + backport jetty-8 annotation parsing to jetty-7
 + Disassociate method on IdentityService
 + 284510 Enhance jetty-start for diagnosis and unit testing
 + 284475 update jetty.sh for new OPTIONS syntax
 + Added DebugHandler
 + Added JavaUtilLog for Jetty logging to java.util.logging framework
 + 284981 Implement a cross-origin filter
 + Improved handling of overlays and resourceCollections
 + 285006 fix AbstractConnector NPE during shutdown.

jetty-7.0.0.RC1 - 15 June 2009
 + JETTY-1066 283357 400 response for bad URIs
 + JETTY-1068 Avoid busy flush of async SSL
 + 283344 Startup on windows is broken

jetty-7.0.0.RC0 - 08 June 2009
 + JETTY-967 create standalone build for PKCS12Import at codehaus
 + JETTY-1056 update jetty-ant module for Jetty 7 at codehaus trunk
 + JETTY-1058 Handle trailing / with aliases
 + 280843 Buffer pool uses isHeader
 + 271535 Adding integration tests, and enabling RFC2616 tests
 + 281287 Handle date headers before 1 Jan 1970
 + 282807 Better handling of 100 continues if response committed.

jetty-7.0.0.M4 - 01 June 2009
 + 281059 NPE in QTP with debug on
 + JETTY-799 shell script for jetty on cygwin
 + JETTY-1031 Handle large pipeline
 + JETTY-1034 Cookie parsing
 + JETTY-1042 Prevent cookie leak between shared connection
 + JETTY-1048 Fix for large partially filtered static content
 + JETTY-1049 Improved transparent proxy usability
 + JETTY-1054 Avoid double deploys
 + JETTY-1055 Cookie quoting
 + JETTY-1057 Error page stack trace XSS

jetty-7.0.0.M3 - 20 June 2009
 + fixed race with expired async listeners
 + refactored configuration mechanism
 + added WebAppContext.setConfigurationDiscovered for servlet 3.0 features
 + 274251 Allow dispatch to welcome files that are servlets (configurable)
 + 277403 Cleanup system property usage.
 + 277798 Denial of Service Filter
 + Portable continuations for jetty6 and servlet3
 + Refactored continuations to only support response wrapping
 + Added ContinuationThrowable
 + 276545 Quoted cookie paths
 + 279725 Support 100 and 102 expectations
 + Refactored AbstractBuffers to HttpBuffers for performance
 + Numerous cleanups from static code analysis
 + 280707 client.HttpConnection does not catch and handle non-IOExceptions
 + 281470 Handle the case where request.PathInfo() should be "/*"

jetty-7.0.0.M2 - 18 May 2009
 + JETTY-937 Work around Sun JVM bugs
 + JETTY-941 Linux chkconfig hint
 + JETTY-959 CGI servlet doesn't kill the CGI in case the client disconnects
 + JETTY-980 Fixed ResourceHandler ? handling, and bad URI creation in listings
 + JETTY-996 Make start-stop-daemon optional
 + 273767 Update to use geronimo annotations spec 1.1.1
 + JETTY-1003 java.lang.IllegalArgumentException: timeout can't be negative
 + JETTY-1004 CERT VU#402580 Canonical path handling includes ? in path segment
 + JETTY-1013 MySql Error with JDBCUserRealm
 + JETTY-1014 Enable start-stop-daemon by default on jetty.sh
   (START_STOP_DAEMON=1)
 + JETTY-1015 Reduce BayeuxClient and HttpClient lock contention
 + JETTY-1020 ZipException in org.mortbay.jetty.webapp.TagLibConfiguration
   prevents all contexts from being loaded
 + 275396 Added ScopedHandler to set servlet scope before security handler

jetty-6.1.18 - 16 May 2009
 + JETTY-937 Improved work around sun JVM selector bugs
 + JETTY-1004 CERT VU#402580 Canonical path handling includes ? in path segment
 + JETTY-1008 ContinuationBayeux destroy is called
 + JETTY-1013 MySql Error with JDBCUserRealm
 + JETTY-1014 Enable start-stop-daemon by default on jetty.sh
   (START_STOP_DAEMON=1)
 + JETTY-1015 Reduce BayeuxClient and HttpClient lock contention
 + JETTY-1017 HttpDestination has too coarse locking
 + JETTY-1018 Denial of Service Filter
 + JETTY-1020 ZipException in org.mortbay.jetty.webapp.TagLibConfiguration
   prevents all contexts from being loaded
 + JETTY-1022 Removed several 1.5isms

jetty-5.1.15 - 18 May 2009
 + JETTY-418 synchronized load class
 + JETTY-1004 CERT VU402580 Canonical path handling includes ? in path segment
 + Fixes for CERT438616-CERT237888-CERT21284

jetty-6.1.17 - 30 April 2009
 + JETTY-936 Make optional dispatching to welcome files as servlets
 + JETTY-937 Work around sun JVM selector bugs
 + JETTY-941 Linux chkconfig hint
 + JETTY-957 Reduce hardcoded versions
 + JETTY-980 Security / Directory Listing XSS present
 + JETTY-982 Make test-jaas-webapp run with jetty:run
 + JETTY-983 Default Servlet sets accept-ranges for cached/gzipped content
 + JETTY-988 X-Forwarded-Host has precedence over X-Forwarded-Server
 + JETTY-989 GzipFilter handles addHeader
 + JETTY-990 Async HttpClient connect
 + JETTY-992 URIUtil.encodePath encodes markup characters
 + JETTY-996 Make start-stop-daemon optional
 + JETTY-997 Remove jpackage-utils dependency on rpm install
 + JETTY-985 Allow listeners to implement both interfaces
 + JETTY-1000 Avoided needless 1.5 dependency
 + JETTY-1002 cometd-api to 1.0.beta8
 + JETTY-1003 java.lang.IllegalArgumentException: timeout can't be negative
 + JETTY-1004 CERT VU#402580 Canonical path handling includes ? in path segment
 + JETTY-1006 Resume meta connect on all XD messages

jetty-7.0.0.M1 - 22 April 2009
 + 271258 FORM Authentication dispatch handling avoids caching
 + Initial support for LoginService.logout
 + Removed HTTPConnection specifics from connection dispatching
 + JETTY-695 Handler dump
 + Reworked authentication for deferred authentication
 + Reworked JMX for new layout
 + JETTY-983 DefaultServlet generates accept-ranges for cached/gzip content
 + 273011 JETTY-980 JETTY-992 Security / Directory Listing XSS present
 + 271536 Add support to IO for quietly closing Readers / Writers
 + 273101 Fix DefaultServletTest XSS test case
 + 273153 Test for Nested references in DispatchServlet

jetty-6.1.16 - 01 April 2009
 + JETTY-702 Create "jetty-tasks.xml" for the Ant plugin
 + JETTY-899 Standardize location for configuration files which go into etc
 + JETTY-936 Allow dispatch to welcome files that are servlets
 + JETTY-944 Lazy messages don't prevent long polls waiting
 + JETTY-946 Redeploys with maven jetty plugin of webapps with overlays don't
   work
 + JETTY-947 Exception stops terracotta session scavenger
 + JETTY-948 ConcurrentModificationException in TerracottaSessionManager
   scavenger
 + JETTY-949 Move cometd source to cometd.org project
 + JETTY-953 SSL keystore file input stream is not being closed directly
 + JETTY-956 SslSelectChannelConnector - password should be the default value
   of keyPassword if not specified
 + JETTY-959 CGI servlet doesn't kill the CGI in case the client disconnects
 + JETTY-964 Typo in Jetty 6.1.15 Manifest - Bundle-RequiredExcutionEnvironment
 + JETTY-972 Move cometd code back from cometd.org project (temporarily)
 + JETTY-973 Deliver same message to a collection of cometd Clients

jetty-7.0.0.M0 - 27 March 2009
 + JETTY-496 Support inetd/xinetd through use of System.inheritedChannel()
 + JETTY-540 Merged 3.0 Public Review changes
 + JETTY-567 Delay in initial TLS Handshake With FireFox 3 beta5 and
   SslSelectChannelConnector
 + JETTY-600 Automated tests of WADI integration + upgrade to WADI 2.0
 + JETTY-691 System.getProperty() calls ... wrap them in doPrivileged
 + JETTY-713 Expose additional AbstractConnector methods via MBean
 + JETTY-731 Completed DeliverListener for cometd
 + JETTY-748 RandomAccessFileBuffer for hadoop optimization
 + JETTY-749 Improved ArrayQueue
 + JETTY-765 ensure stop mojo works for all execution phases
 + JETTY-774 Improved caching of mime types with charsets
 + JETTY-775 AbstractSessionTest remove timing related test
 + JETTY-778 handle granular windows timer in lifecycle test
 + JETTY-779 Fixed line feed in request log
 + JETTY-781 Add "mvn jetty:deploy-war" for deploying a pre-assembled war
 + JETTY-782 Implement interval advice for BayeuxClient
 + JETTY-783 Update jetty self-signed certificate
 + JETTY-784 TerracottaSessionManager leaks sessions scavenged in other nodes
 + JETTY-786 Allow DataSourceUserRealm to create tables
 + JETTY-787 Handle MSIE7 mixed encoding
 + JETTY-788 Fix jotm for scoped jndi naming
 + JETTY-790 WaitingContinuations can change mutex if not pending
 + JETTY-792 TerracottaSessionManager does not unlock new session with
   requested id
 + JETTY-793 Fixed DataCache millisecond rounding
 + JETTY-794 WADI integration tests fail intermittently.
 + JETTY-795 NullPointerException in SocketConnector.java
 + JETTY-801 Bring back 2 arg EnvEntry constructor
 + JETTY-802 Modify the default error pages to make association with Jetty
   clearer
 + JETTY-804 HttpClient timeout does not always work
 + JETTY-805 Fix jetty-jaas.xml for new UserRealm package
 + JETTY-806 Timeout related Deadlocks in HTTP Client
 + JETTY-807 HttpTester to handle charsets
 + JETTY-808 cometd client demo run.sh
 + JETTY-809 Need a way to customize WEB-INF/lib file extensions that are added
   to the classpath
 + JETTY-811 Allow configuration of system properties for the maven plugin
   using a file
 + JETTY-813 Simplify NCSARequestLog.java
 + JETTY-814 Add org.eclipse.jetty.client.Address.toString()
 + JETTY-816 Implement reconnect on java bayeux client
 + JETTY-817 Aborted SSL connections may cause jetty to hang with full cpu
 + JETTY-818 Support javax.servlet.request.ssl_session_id
 + JETTY-821 Allow lazy loading of persistent sessions
 + JETTY-822 Commit when autocommit=true causes error with mysql
 + JETTY-823 Extend start.config profiles
 + JETTY-824 Access to inbound byte statistics
 + JETTY-825 URL decoding of spaces (+) fails for encoding not utf8
 + JETTY-830 Add ability to reserve connections on http client
 + JETTY-831 Add ability to stop java bayeux client
 + JETTY-832 More UrlDecoded handling in relation to JETTY-825
 + JETTY-834 Configure DTD does not allow <Map> children
 + JETTY-837 Response headers set via filter are ignored for static resources
 + JETTY-840 add default mime types to *.htc and *.pps
 + JETTY-841 Duplicate messages when sending private message to yourself with
   cometd chat demo
 + JETTY-842 NPE in jetty client when no path component
 + JETTY-843 META-INF/MANIFEST.MF is not present in unpacked webapp
 + JETTY-844 Replace reflection with direct invocation in Slf4jLog
 + JETTY-848 Temporary folder not fully cleanup after stop (via Sweeper)
 + JETTY-854 JNDI scope does not work with applications in a .war
 + JETTY-859 MultiPartFilter ignores the query string parameters
 + JETTY-861 switched buffer pools to ThreadLocal implementation
 + JETTY-862 EncodedHttpURI ignores given encoding in constructor
 + JETTY-866 jetty-client test case fix
 + JETTY-869 NCSARequestLog locale config
 + JETTY-870 NullPointerException in Response when performing redirect to wrong
   relative URL
 + JETTY-871 jetty-client expires() NPE race condition fixed
 + JETTY-876 Added new BlockingArrayQueue and new QueuedThreadPool
 + JETTY-894 Add android .apk to mime types
 + JETTY-897 Remove swing dependency in GzipFilter
 + JETTY-898 Allow jetty debs to start with custom java args provided by users
 + JETTY-899 Standardize location and build process for configuration files
   which go into etc
 + JETTY-890 merge jaspi branch to trunk
 + JETTY-909 Update useragents cache
 + JETTY-917 Change for JETTY-811 breaks systemProperties config parameter in
   maven-jetty-plugin
 + JETTY-922 Fixed NPE on getRemoteHost when socket closed
 + JETTY-923 Client supports attributes
 + JETTY-926 default location for generatedClasses of jspc plugin is incorrect
 + JETTY-939 NPE in AbstractConfiguration.callPreDestroyCallbacks
 + JETTY-938 Deadlock in the TerracottaSessionManager
 + JETTY-946 Redeploys with maven jetty plugin of webapps with overlays don't
   work
 + JETTY-950 Fix double-printing of request URI in request log
 + JETTY-953 SSL keystore file input stream is not being closed directly
 + JETTY-956 SslSelectChannelConnector - password should be the default value
   of keyPassword if not specified
 + moved to org.eclipse packages
 + simplified HandlerContainer API

jetty-6.1.15 - 04 March 2009
 + JETTY-931 Fix issue with jetty-rewrite.xml
 + JETTY-934 fixed stop/start of Bayeux Client
 + JETTY-938 Deadlock in the TerracottaSessionManager
 + JETTY-939 NPE in AbstractConfiguration.callPreDestroyCallbacks
 + JETTY-923 BayeuxClient uses message pools to reduce memory footprint
 + JETTY-924 Improved BayeuxClient disconnect handling
 + JETTY-925 Lazy bayeux messages
 + JETTY-926 default location for generatedClasses of jspc plugin is incorrect

jetty-6.1.15 - 02 March 2009
 + JETTY-923 BayeuxClient uses message pools to reduce memory footprint
 + JETTY-924 Improved BayeuxClient disconnect handling
 + JETTY-925 Lazy bayeux messages
 + JETTY-926 default location for generatedClasses of jspc plugin is incorrect

jetty-6.1.15.rc4 - 19 February 2009
 + JETTY-496 Support inetd/xinetd through use of System.inheritedChannel()
 + JETTY-713 Expose additional AbstractConnector methods via MBean
 + JETTY-749 Improved ack extension
 + JETTY-811 Allow configuration of system properties for the maven plugin
   using a file
 + JETTY-840 add default mime types to *.htc and *.pps
 + JETTY-848 Temporary folder not fully cleanup after stop (via Sweeper)
 + JETTY-872 Handshake handler calls wrong extension callback
 + JETTY-879 Support extra properties in jQuery comet implementation
 + JETTY-802 Modify the default error pages to make association with Jetty
   clearer
 + JETTY-869 NCSARequestLog locale config
 + JETTY-870 NullPointerException in Response when performing redirect to wrong
   relative URL
 + JETTY-878 Removed printStackTrace from WaitingContinuation
 + JETTY-882 ChannelBayeuxListener called too many times
 + JETTY-884 Use hashcode for threadpool ID
 + JETTY-815 Add comet support to jQuery javascript library
 + JETTY-887 Split configuration and handshaking in jquery comet
 + JETTY-888 Fix abort in case of multiple outstanding connections
 + JETTY-894 Add android .apk to mime types
 + JETTY-898 Allow jetty debs to start with custom java args provided by users
 + JETTY-909 Update useragents cache

jetty-6.1.15.rc3 - 28 January 2009
 + JETTY-691 System.getProperty() calls ... wrap them in doPrivileged
 + JETTY-844 Replace reflection with direct invocation in Slf4jLog
 + JETTY-861 switched buffer pools to ThreadLocal implementation
 + JETTY-866 jetty-client test case fix

jetty-6.1.15.rc2 - 23 January 2009
 + adjustment to jetty-client assembly packaging
 + JETTY-567 Delay in initial TLS Handshake With FireFox 3 beta5 and
   SslSelectChannelConnector

jetty-6.1.15.pre0 - 20 January 2009
 + JETTY-600 Automated tests of WADI integration + upgrade to WADI 2.0
 + JETTY-749 Reliable message delivery
 + JETTY-794 WADI integration tests fail intermittently.
 + JETTY-781 Add "mvn jetty:deploy-war" for deploying a pre-assembled war
 + JETTY-795 NullPointerException in SocketConnector.java
 + JETTY-798 Jboss session manager incompatible with LifeCycle.Listener
 + JETTY-801 Bring back 2 arg EnvEntry constructor
 + JETTY-802 Modify the default error pages to make association with Jetty very
   clear
 + JETTY-804 HttpClient timeout does not always work
 + JETTY-806 Timeout related Deadlocks in HTTP Client
 + JETTY-807 HttpTester to handle charsets
 + JETTY-808 cometd client demo run.sh
 + JETTY-809 Need a way to customize WEB-INF/lib file extensions that are added
   to the classpath
 + JETTY-814 Add org.eclipse.jetty.client.Address.toString()
 + JETTY-816 Implement reconnect on java bayeux client
 + JETTY-817 Aborted SSL connections may cause jetty to hang with full cpu
 + JETTY-819 Jetty Plus no more jre 1.4
 + JETTY-821 Allow lazy loading of persistent sessions
 + JETTY-824 Access to inbound byte statistics
 + JETTY-825 URL decoding of spaces (+) fails for encoding not utf8
 + JETTY-827 Externalize servlet api
 + JETTY-830 Add ability to reserve connections on http client
 + JETTY-831 Add ability to stop java bayeux client
 + JETTY-832 More UrlDecoded handling in relation to JETTY-825
 + JETTY-833 Update debian and rpm packages for new jsp-2.1-glassfish jars and
   servlet-api jar
 + JETTY-834 Configure DTD does not allow <Map> children
 + JETTY-837 Response headers set via filter are ignored for static resources
 + JETTY-841 Duplicate messages when sending private message to yourself with
   cometd chat demo
 + JETTY-842 NPE in jetty client when no path component
 + JETTY-843 META-INF/MANIFEST.MF is not present in unpacked webapp
 + JETTY-852 Ensure handshake and connect retried on failure for jquery-cometd
 + JETTY-854 JNDI scope does not work with applications in a .war
 + JETTY-855 jetty-client uber assembly support
 + JETTY-858 ContentExchange provides bytes
 + JETTY-859 MultiPartFilter ignores the query string parameters
 + JETTY-862 EncodedHttpURI ignores given encoding in constructor

jetty-6.1.14 - 14 November 2008
 + JETTY-630 jetty6-plus rpm is missing the jetty6-plus jar
 + JETTY-748 Reduced flushing of large content
 + JETTY-765 ensure stop mojo works for all execution phases
 + JETTY-777 include util5 on the jetty debs
 + JETTY-778 handle granular windows timer in lifecycle test
 + JETTY-779 Fixed line feed in request log
 + JETTY-782 Implement interval advice for BayeuxClient
 + JETTY-783 Update jetty self-signed certificate
 + JETTY-784 TerracottaSessionManager leaks sessions scavenged in other nodes
 + JETTY-787 Handle MSIE7 mixed encoding
 + JETTY-788 Fix jotm for new scoped jndi
 + JETTY-790 WaitingContinuations can change mutex if not pending
 + JETTY-791 Ensure jdk1.4 compatibility for jetty-6
 + JETTY-792 TerracottaSessionManager does not unlock new session with
   requested id
 + JETTY-793 Fixed DataCache millisecond rounding

jetty-6.1.12 - 04 November 2008
 + JETTY-731 Completed DeliverListener for cometd
 + JETTY-772 Increased default threadpool size to 250
 + JETTY-774 Cached text/json content type
 + JETTY-775 fix port of openspaces to jetty-6

jetty-7.0.0.pre5 - 30 October 2008
 + JETTY-766 Fix npe
 + JETTY-767 Fixed SSL Client no progress handshake bug
 + JETTY-768 Remove EnvEntry overloaded constructors
 + JETTY-769 jquery example error
 + JETTY-771 Ensure NamingEntryUtil is jdk1.4 compliant
 + JETTY-772 Increased default threadpool size to 250

jetty-6.1.12.rc5 - 30 October 2008
 + JETTY-703 maxStopTimeMs added to QueuedThreadPool
 + JETTY-762 improved QueuedThreadPool idle death handling
 + JETTY-763 Fixed AJP13 constructor
 + JETTY-766 Ensure SystemProperties set early on jetty-maven-plugin
 + JETTY-767 Fixed SSL Client no progress handshake bug
 + JETTY-768 Remove EnvEntry overloaded constructors
 + JETTY-771 Ensure NamingEntryUtil jdk1.4 compliant

jetty-7.0.0.pre4 - 28 October 2008
 + JETTY-241 Support for web application overlays in rapid application
   development (jetty:run)
 + JETTY-319 improved passing of exception when webapp unavailable
 + JETTY-331 SecureRandom hangs on systems with low entropy (connectors slow to
   start)
 + JETTY-591 No server classes for jetty-web.xml
 + JETTY-604 AbstractSession.setSessionURL
 + JETTY-670 $JETTY_HOME/bin/jetty.sh not worked in Solaris, because of
   /usr/bin/which has no error-code
 + JETTY-676 ResourceHandler doesn't support HTTP HEAD requests
 + JETTY-677 GWT serialization issue
 + JETTY-680 Can't configure the ResourceCollection with maven
 + JETTY-681 JETTY-692 MultiPartFilter is slow for file uploads
 + JETTY-682 Added listeners and queue methods to cometd
 + JETTY-686 LifeCycle.Listener
 + JETTY-687 Issue with servlet-mapping in dynamic servlet invoker
 + JETTY-688 Cookie causes NumberFormatException
 + JETTY-689 processing of non-servlet related annotations
 + JETTY-690 Updated XBean dependencies to XBean version 3.4.3 and Spring
   2.0.5.
 + JETTY-696 jetty.sh restart not working
 + JETTY-698 org.eclipse.resource.JarResource.extract does not close
   JarInputStream jin
 + JETTY-699 Optimized cometd sending of 1 message to many many clients
 + JETTY-700 unit test for unread request data
 + JETTY-703 maxStopTimeMs added to QueuedThreadPool
 + JETTY-708 allow 3 scopes for jndi resources: jvm, server or webapp
 + JETTY-709 Jetty plugin's WebAppConfig configured properties gets overridden
   by AbstractJettyRunMojo even when already set
 + JETTY-710 Worked around poor implementation of File.toURL()
 + JETTY-711 DataSourceUserRealm implementation
 + JETTY-712 HttpClient does not handle request complete after response
   complete
 + JETTY-715 AJP Key size as Integer
 + JETTY-716 Fixed NPE on empty cometd message
 + JETTY-718 during ssl unwrap, return true if some bytes were read, even if
   underflow
 + JETTY-720 fix HttpExchange.waitForStatus
 + JETTY-721 Support wildcard in VirtualHosts configuration
 + JETTY-723 jetty.sh does not check if TMP already is set
 + JETTY-724 better handle EBCDIC default JVM encoding
 + JETTY-728 Improve Terracotta integration and performances
 + JETTY-730 Set SAX parse features to defaults
 + JETTY-731 DeliverListener for cometd
 + JETTY-732 Case Sensitive Basic Authentication Response Header
   Implementations
 + JETTY-733 Expose ssl connectors with xbean
 + JETTY-735 Wrong default jndi name on DataSourceUserRealm
 + JETTY-736 Client Specific cometd advice
 + JETTY-737 refactored jetty.jar into jetty, xml, security, ssl, webapp and
   deploy jars
 + JETTY-738 If jetty.sh finds a pid file is does not check to see if a process
   with that pid is still running
 + JETTY-739 Race in QueuedThreadPool
 + JETTY-741 HttpClient connects slowly due to reverse address lookup by
   InetAddress.getHostName()
 + JETTY-742 Private messages in cometd chat demo
 + JETTY-747 Handle HttpClient exceptions better
 + JETTY-755 Optimized HttpParser and buffers for few busy connections
 + JETTY-757 Unhide JAAS classes
 + JETTY-758 Update JSP to glassfish tag SJSAS-9_1_1-B51-18_Sept_2008
 + JETTY-759 Fixed JSON small negative real numbers
 + JETTY-760 Handle wildcard VirtualHost and normalize hostname in
   ContextHandlerCollection
 + JETTY-762 improved QueuedThreadPool idle death handling
 + JETTY-763 Fixed AJP13 constructor
 + JETTY-766 Ensure SystemProperties set early on jetty-maven-plugin

jetty-6.1.12.rc4 - 21 October 2008
 + JETTY-319 improved passing of exception when webapp unavailable
 + JETTY-729 Backport Terracotta integration to Jetty6.1 branch
 + JETTY-744 Backport of JETTY-741: HttpClient connects slowly due to reverse
   address lookup by InetAddress.getHostName()
 + JETTY-747 Handle exceptions better in HttpClient
 + JETTY-755 Optimized HttpParser and buffers for few busy connections
 + JETTY-758 Update JSP 2.1 to glassfish tag SJSAS-9_1_1-B51-18_Sept_2008
 + JETTY-759 Fixed JSON small negative real numbers
 + JETTY-760 Handle wildcard VirtualHost and normalize hostname in
   ContextHandlerCollection

jetty-6.1.12.rc3 - 10 October 2008
 + JETTY-241 Support for web application overlays in rapid application
   development (jetty:run)
 + JETTY-686 LifeCycle.Listener
 + JETTY-715 AJP key size
 + JETTY-716 NPE for empty cometd message
 + JETTY-718 during ssl unwrap, return true if some bytes were read, even if
   underflow
 + JETTY-720 fix HttpExchange.waitForStatus
 + JETTY-721 Support wildcard in VirtualHosts configuration
 + JETTY-722 jndi related threadlocal not cleared after deploying webapp
 + JETTY-723 jetty.sh does not check if TMP already is set
 + JETTY-725 port JETTY-708 (jndi scoping) to jetty-6
 + JETTY-730 set SAX parser features to defaults
 + JETTY-731 DeliverListener for cometd
 + JETTY-732 Case Sensitive Basic Authentication Response Header
   Implementations
 + JETTY-736 Client Specific cometd advice
 + JETTY-738 If jetty.sh finds a pid file is does not check to see if a process
   with that pid is still running
 + JETTY-739 Race in QueuedThreadPool
 + JETTY-742 Private messages in cometd chat demo

jetty-6.1.12rc2 - 12 September 2008
 + JETTY-282 Support manually-triggered reloading
 + JETTY-331 SecureRandom hangs on systems with low entropy (connectors slow to
   startup)
 + JETTY-591 No server classes for jetty-web.xml
 + JETTY-670 $JETTY_HOME/bin/jetty.sh not worked in Solaris, because of
   /usr/bin/which has no error-code
 + JETTY-671 Configure DTD does not allow <Property> children
 + JETTY-672 Utf8StringBuffer doesn't properly handle null characters (char
   with byte value 0)
 + JETTY-676 ResourceHandler doesn't support HTTP HEAD requests
 + JETTY-677 GWT serialization issue
 + JETTY-680 Can't configure the ResourceCollection with maven
 + JETTY-681 JETTY-692 MultiPartFilter is slow for file uploads
 + JETTY-682 Added listeners and queue methods to cometd
 + JETTY-683 ResourceCollection works for jsp files but does not work for
   static resources under DefaultServlet
 + JETTY-687 Issue with servlet-mapping in dynamic servlet invoker
 + JETTY-688 Cookie causes NumberFormatException
 + JETTY-696 ./jetty.sh restart not working
 + JETTY-698 org.eclipse.resource.JarResource.extract does not close
   JarInputStream jin
 + JETTY-699 Optimize cometd sending of 1 message to many many clients
 + JETTY-709 Jetty plugin's WebAppConfig configured properties gets overridden
   by AbstractJettyRunMojo even when already set
 + JETTY-710 Worked around poor implementation of File.toURL()
 + JETTY-712 HttpClient does not handle request complete after response
   complete

jetty-7.0.0pre3 - 06 August 2008
 + Upgrade jsp 2.1 to SJSAS-9_1_02-B04-11_Apr_2008
 + JETTY-30 Externalize servlet-api to own project
 + JETTY-182 Support setting explicit system classpath for jasper
   Jsr199JavaCompiler
 + JETTY-319 Get unavailable exception and added startWithUnavailable option
 + JETTY-381 JETTY-622 Multiple Web Application Source Directory
 + JETTY-442 Accessors for mimeType on ResourceHandler
 + JETTY-502 forward of an include should hide include attributes
 + JETTY-562 RewriteHandler support for virtual hosts
 + JETTY-563 JETTY-482 OpenRemoteServiceServlet for GWT1.5M2+
 + JETTY-564 Consider optionally importing org.apache.jasper.servlet
 + JETTY-571 SelectChannelConnector throws Exception on close on Windows
 + JETTY-608 Suspend/Resume/Complete request listeners
 + JETTY-621 Improved LazyList javadoc
 + JETTY-626 Null protect reading the dtd resource from classloader
 + JETTY-628 Rewrite rule for rewriting scheme
 + JETTY-629 Don't hold timeout lock during expiry call.
 + JETTY-632 OSGi tags for Jetty client
 + JETTY-633 Default form encoding 8859_1 rather than utf-8
 + JETTY-635 Correctly merge request parameters when doing forward
 + JETTY-636 Separate lifeycle of jsp build
 + JETTY-637 empty date headers throw IllegalArgumentException
 + JETTY-641 JDBC Realm purge cache problem
 + JETTY-642 NPE in LdapLoginModule
 + JETTY-644 LdapLoginModule uses proper filters when searching
 + JETTY-645 Do not provide jetty-util to the webapps
 + JETTY-646 Should set Cache-Control header when sending errors to avoid
   caching
 + JETTY-647 suspended POSTs with binary data do too many resumes
 + JETTY-650 Parse "*" URI for HTTP OPTIONS request
 + JETTY-651 Release resources during destroy
 + JETTY-653 Upgrade jta api specs to more recent version
 + JETTY-654 Allow Cometd Bayeux object to be JMX manageable
 + JETTY-655 Support parsing application/x-www-form-urlencoded parameters via
   http PUT
 + JETTY-656 HttpClient defaults to async mode
 + JETTY-659 ContentExchange and missing headers in HttpClient
 + JETTY-663 AbstractDatabaseLoginModule handle not found UserInfo and userName
 + JETTY-665 Support merging class directories
 + JETTY-666 scanTargetPatterns override the values already being set by
   scanTarget
 + JETTY-667 HttpClient handles chunked content
 + JETTY-669 Http methods other than GET and POST should not have error page
   content
 + JETTY-671 Configure DTD does not allow <Property> children
 + JETTY-672 Utf8StringBuffer doesn't properly handle null characters (char
   with byte value 0)
 + JETTY-675 ServletContext.getRealPath("") returns null instead of returning
   the root dir of the webapp

jetty-6.1.12rc1 - 01 August 2008
 + Upgrade jsp 2.1 to SJSAS-9_1_02-B04-11_Apr_2008
 + JETTY-319 Get unavailable exception and added startWithUnavailable option
 + JETTY-381 JETTY-622 Multiple Web Application Source Directory
 + JETTY-442 Accessors for mimeType on ResourceHandler
 + JETTY-502 forward of an include should hide include attributes
 + JETTY-562 RewriteHandler support for virtual hosts
 + JETTY-563 GWT OpenRemoteServiceServlet GWT1.5M2+
 + JETTY-564 Consider optionally importing org.apache.jasper.servlet
 + JETTY-571 SelectChannelConnector throws Exception on close on Windows
 + JETTY-596 Proxy authorization support in HttpClient
 + JETTY-599 handle buffers consistently handle invalid index for poke
 + JETTY-603 Handle IPv6 in HttpURI
 + JETTY-605 Added optional threadpool to BayeuxService
 + JETTY-606 better writeTo impl for BIO
 + JETTY-607 Add GigaSpaces session clustering
 + JETTY-610 jetty.class.path not being interpreted
 + JETTY-613 website module now generates site-component for jetty-site
 + JETTY-614 scanner allocated hashmap on every scan
 + JETTY-623 ServletContext.getServerInfo() non compliant
 + JETTY-626 Null protect reading the dtd resource from classloader
 + JETTY-628 Rewrite rule for rewriting scheme
 + JETTY-629 Don't hold timeout lock during expiry call.
 + JETTY-632 OSGi tags for Jetty client
 + JETTY-633 Default form encoding 8859_1 rather than utf-8
 + JETTY-635 Correctly merge request parameters when doing forward
 + JETTY-637 empty date headers throw IllegalArgumentException
 + JETTY-641 JDBC Realm purge cache problem
 + JETTY-642 NPE in LdapLoginModule
 + JETTY-644 LdapLoginModule uses proper filters when searching
 + JETTY-646 Should set Cache-Control header when sending errors to avoid
   caching
 + JETTY-647 suspended POSTs with binary data do too many resumes
 + JETTY-650 Parse "*" URI for HTTP OPTIONS request
 + JETTY-651 Release resources during destroy
 + JETTY-654 Allow Cometd Bayeux object to be JMX manageable
 + JETTY-655 Support parsing application/x-www-form-urlencoded parameters via
   http PUT
 + JETTY-656 HttpClient defaults to async mode
 + JETTY-657 Backport jetty-7 sslengine
 + JETTY-658 backport latest HttpClient from jetty-7 to jetty-6
 + JETTY-659 ContentExchange and missing headers in HttpClient
 + JETTY-660 Backported QoSFilter
 + JETTY-663 AbstractDatabaseLoginModule handle not found UserInfo and userName
 + JETTY-665 Support merging class directories
 + JETTY-666 scanTargetPatterns override the values already being set by
   scanTarget
 + JETTY-667 HttpClient handles chunked content
 + JETTY-669 Http methods other than GET and POST should not have error page
   content

jetty-7.0.0pre2 - 30 June 2008
 + JETTY-336 413 error for header buffer full
 + JETTY-425 race in stopping SelectManager
 + JETTY-568 Avoid freeing DirectBuffers. New locking NIO ResourceCache.
 + JETTY-569 Stats for suspending requests
 + JETTY-576 servlet dtds and xsds not being loaded locally
 + JETTY-572 Unique cometd client ID
 + JETTY-578 OSGI Bundle-RequiredExcutionEnvironment set to J2SE-1.5
 + JETTY-579 OSGI resolved management and servlet.resources import error
 + JETTY-580 Fixed SSL shutdown
 + JETTY-581 ContextPath constructor
 + JETTY-582 final ISO_8859_1
 + JETTY-584 handle null contextPath
 + JETTY-587 persist sessions to database
 + JETTY-588 handle Retry in ServletException
 + JETTY-589 Added Statistics Servlet
 + JETTY-590 Digest auth domain for root context
 + JETTY-592 expired timeout callback without synchronization
 + JETTY-595 SessionHandler only deals with base request session
 + JETTY-596 proxy support in HttpClient
 + JETTY-598 Added more reliable cometd message flush option
 + JETTY-599 handle buffers consistently handle invalid index for poke
 + JETTY-603 Handle IPv6 in HttpURI
 + JETTY-605 Added optional threadpool to BayeuxService
 + JETTY-606 better writeTo impl for BIO
 + JETTY-607 Add GigaSpaces session clustering
 + JETTY-609 jetty-client improvements for http conversations
 + JETTY-610 jetty.class.path not being interpreted
 + JETTY-611 make general purpose jar scanning mechanism
 + JETTY-612 scan for web.xml fragments
 + JETTY-613 various distribution related changes
 + JETTY-614 scanner allocates hashmap on every iteration
 + JETTY-615 Replaced CDDL servlet.jar with Apache-2.0 licensed version
 + JETTY-623 ServletContext.getServerInfo() non compliant

jetty-6.1.11 - 06 June 2008
 + JETTY-336 413 error for full header buffer
 + JETTY-425 race in stopping SelectManager
 + JETTY-580 Fixed SSL shutdown
 + JETTY-581 ContextPath constructor
 + JETTY-582 final ISO_8859_1
 + JETTY-584 handle null contextPath
 + JETTY-588 handle Retry in ServletException
 + JETTY-590 Digest auth domain for root context
 + JETTY-592 expired timeout callback without synchronization
 + JETTY-595 SessionHandler only deals with base request session
 + JETTY-596 Proxy support in HttpClient
 + JETTY-598 Added more reliable cometd message flush option

jetty-6.1.10 - 20 May 2008
 + Use QueuedThreadPool as default
 + JETTY-440 allow file name patterns for jsp compilation for jspc plugin
 + JETTY-529 CNFE when deserializing Array from session resolved
 + JETTY-537 JSON handles Locales
 + JETTY-547 Shutdown SocketEndpoint output before close
 + JETTY-550 Reading 0 bytes corrupts ServletInputStream
 + JETTY-551 Upgraded to Wadi 2.0-M10
 + JETTY-556 Encode all URI fragments
 + JETTY-557 Allow ServletContext.setAttribute before start
 + JETTY-558 optional handling of X-Forwarded-For/Host/Server
 + JETTY-566 allow for non-blocking behavior in jetty maven plugin
 + JETTY-572 unique cometd client ID
 + JETTY-579 osgi fixes with management and servlet resources

jetty-7.0.0pre1 - 03 May 2008
 + Allow annotations example to be built regularly, copy to contexts-available
 + Make annotations example consistent with servlet 3.0
 + Refactor JNDI impl to simplify
 + Improved suspend examples
 + address osgi bundling issue relating to build resources
 + JETTY-529 CNFE when deserializing Array from session resolved
 + JETTY-558 optional handling of X-Forwarded-For/Host/Server
 + JETTY-559 ignore unsupported shutdownOutput
 + JETTY-566 allow for non-blocking behavior in jetty maven plugin
 + JETTY-440 allow file name patterns for jsp compilation for jspc plugin

jetty-7.0.0pre0 - 21 April 2008
 + Jetty-6.1.8 Changes
 + Refactor of Continuation towards servlet 3.0 proposal
 + JETTY-282 Support manually-triggered reloading by maven plugin
 + QueuedThreadPool default
 + RetryRequest exception now extends ThreadDeath
 + Added option to dispatch to suspended requests.
 + Delay 100 continues until getInputStream
 + HttpClient supports pipelined request
 + BayeuxClient use a single connection for polling
 + Make javax.servlet.jsp optional osgi import for jetty module
 + Ensure Jotm tx mgr can be found in jetty-env.xml
 + Renamed modules management and naming to jmx and jndi.
 + JETTY-341 100-Continues sent only after getInputStream called.
 + JETTY-386 backout fix and replaced with
   ContextHandler.setCompactPath(boolean)
 + JETTY-399 update OpenRemoteServiceServlet to gwt 1.4
 + JETTY-467 allow URL rewriting to be disabled.
 + JETTY-468 unique holder names for addServletWithMapping
 + JETTY-471 LDAP JAAS Realm
 + JETTY-474 Fixed case sensitivity issue with HttpFields
 + JETTY-475 AJP connector in RPMs
 + JETTY-486 Improved jetty.sh script
 + JETTY-487 Handle empty chunked request
 + JETTY-494 Client side session replication
 + JETTY-519 HttpClient does not recycle closed connection.
 + JETTY-522 Add build profile for macos for setuid
 + JETTY-523 Default servlet uses ServletContext.getResource
 + JETTY-524 Don't synchronize session event listener calls
 + JETTY-525 Fixed decoding for long strings
 + JETTY-526 Fixed MMBean fields on JMX MBeans
 + JETTY-528 Factor our cookie parsing to CookieCutter
 + JETTY-530 Improved JMX MBeanContainer lifecycle
 + JETTY-531 Optional expires on MovedContextHandler
 + JETTY-532 MBean properties for QueuedThreadPool
 + JETTY-535 Fixed Bayeux server side client memory leak
 + JETTY-537 JSON handles Locales
 + JETTY-538 test harness fix for windows
 + JETTY-540 Servlet-3.0 & java5 support (work in progress)
 + JETTY-543 Atomic batch get and put of files.
 + JETTY-545 Rewrite handler
 + JETTY-546 Webapp runner. All in one jar to run a webapps
 + JETTY-547 Shutdown SocketEndpoint output before close
 + JETTY-550 Reading 0 bytes corrupts ServletInputStream
 + JETTY-551 Wadi 2.0-M10
 + JETTY-553 Fixed customize override
 + JETTY-556 Encode all URI fragments
 + JETTY-557 Allow ServletContext.setAttribute before start
 + JETTY-560 Allow decoupling of jndi names in web.xml

jetty-6.1.9 - 26 March 2008
 + Make javax.servlet.jsp optional osgi import for jetty module
 + Ensure Jotm tx mgr can be found in jetty-env.xml
 + JETTY-399 update OpenRemoteServiceServlet to gwt 1.4
 + JETTY-471 LDAP JAAS Realm
 + JETTY-475 AJP connector in RPMs
 + JETTY-482 update to JETTY-399
 + JETTY-519 HttpClient does not recycle closed connection.
 + JETTY-522 Add build profile for macos for setuid
 + JETTY-525 Fixed decoding for long strings
 + JETTY-526 Fixed MMBean fields on JMX MBeans
 + JETTY-532 MBean properties for QueuedThreadPool
 + JETTY-535 Fixed Bayeux server side client memory leak
 + JETTY-538 test harness fix for windows
 + JETTY-541 Cometd per client timeouts

jetty-6.1.8 - 28 February 2008
 + Added QueuedThreadPool
 + Optimized QuotedStringTokenizer.quote()
 + further Optimizations and improvements of Cometd
 + Optimizations and improvements of Cometd, more pooled objects
 + Improved Cometd timeout handling
 + Added BayeuxService
 + Cookie support in BayeuxClient
 + Improved Bayeux API
 + add removeHandler(Handler) method to HandlerContainer interface
 + Added JSON.Convertor and non static JSON instances
 + Long cache for JSON
 + Fixed JSON negative numbers
 + JSON unquotes /
 + Add "mvn jetty:stop"
 + allow sessions to be periodically persisted to disk
 + grizzly fixed for posts
 + Remove duplicate commons-logging jars and include sslengine in jboss sar
 + Allow code ranges on ErrorPageErrorHandler
 + AJP handles bad mod_jk methods
 + JETTY-350 log ssl errors on SslSocketConnector
 + JETTY-417 JETTY_LOGS environment variable not queried by jetty.sh
 + JETTY-433 ContextDeployer constructor fails unnecessarily when using a
   security manager if jetty.home not set
 + JETTY-434 ContextDeployer scanning of sub-directories should be optional
 + JETTY-481 Handle empty Bayeux response
 + JETTY-489 Improve doco on the jetty.port property for plugin
 + JETTY-490 Fixed JSONEnumConvertor
 + JETTY-491 opendocument mime types
 + JETTY-492 Null pointer in HashSSORealm
 + JETTY-493 JSON handles BigDecimals
 + JETTY-498 Improved cookie parsing
 + JETTY-507 Fixed encoding from JETTY-388 and test case
 + JETTY-508 Extensible cometd handlers
 + JETTY-509 Fixed JSONP transport for changing callback names
 + JETTY-511 jetty.sh mishandled JETTY_HOME when launched from a relative path
 + JETTY-512 add slf4j as optional to manifest
 + JETTY-513 Terracotta session replication does not work when the initial page
   on each server does not set any attributes
 + JETTY-515 Timer is missing scavenging Task in HashSessionManager

jetty-6.1.7 - 22 December 2007
 + Added BayeuxService
 + Added JSON.Convertor and non static JSON instances
 + Add "mvn jetty:stop"
 + allow sessions to be periodically persisted to disk
 + Cookie support in BayeuxClient
 + grizzly fixed for posts
 + jetty-6.1 branch created from 6.1.6 and r593 of jetty-contrib trunk
 + Optimizations and improvements of Cometd, more pooled objects
 + Update java5 patch
 + JETTY-386 CERT-553235 backout fix and replaced with
   ContextHandler.setCompactPath(boolean)
 + JETTY-467 allow URL rewriting to be disabled.
 + JETTY-468 unique holder names for addServletWithMapping
 + JETTY-474 Fixed case sensitivity issue with HttpFields
 + JETTY-486 Improved jetty.sh script
 + JETTY-487 Handle empty chunked request

jetty-6.1.6 - 18 November 2007
 + rudimentary debian packaging
 + updated grizzly connector to 1.6.1
 + JETTY-455 Optional cometd id
 + JETTY-459 Unable to deploy from Eclipse into the root context
 + JETTY-461 fixed cometd unknown channel
 + JETTY-464 typo in ErrorHandler
 + JETTY-465 System.exit() in constructor exception for MultiPartOutputStream

jetty-6.1.6rc1 - 05 November 2007
 + Upgrade jsp 2.1 to SJSAS-9_1-B58G-FCS-08_Sept_2007
 + Housekeeping on poms
 + CERT VU#38616 handle single quotes in cookie names.
 + Improved JSON parsing from Readers
 + Moved some impl classes from jsp-api-2.1 to jsp-2.1
 + Added configuration file for capturing stderr and stdout
 + Updated for dojo 1.0(rc) cometd
 + Give bayeux timer name
 + Give Terracotta session scavenger a name
 + Jetty Eclipse Plugin 1.0.1: force copy of context file on redeploy
 + JETTY-388 Handle utf-16 and other multibyte non-utf-8 form content.
 + JETTY-409 String params that denote files changed to File
 + JETTY-438 handle trailing . in vhosts
 + JETTY-439 Fixed 100 continues clash with Connection:close
 + JETTY-451 Concurrent modification of session during invalidate
 + JETTY-443 windows bug causes Acceptor thread to die
 + JETTY-445 removed test code
 + JETTY-448 added setReuseAddress on AbstractConnector
 + JETTY-450 Bad request for response sent to server
 + JETTY-452 CERT VU#237888 Dump Servlet - prevent cross site scripting
 + JETTY-453 updated Wadi to 2.0-M7
 + JETTY-454 handle exceptions with themselves as root cause
 + JETTY-456 allow null keystore for osX
 + JETTY-457 AJP certificate chains

jetty-6.1.6rc0 - 03 October 2007
 + Added jetty.lib system property to start.config
 + AJP13 Fix on chunked post
 + Fix cached header optimization for extra characters
 + SetUID option to support setgid
 + Make mx4j used only if runtime uses jdk<1.5
 + Moved Grizzly to contrib
 + Give deployment file Scanner threads a unique name
 + Fix Host header for async client
 + Fix typo in async client onResponsetHeader method name
 + Tweak OSGi manifests to remove unneeded imports
 + Allow scan interval to be set after Scanner started
 + Add jetty.host system property
 + Allow properties files on the XmlConfiguration command line.
 + Prevent infinite loop on stopping with temp dir
 + Ensure session is completed only when leaving context.
 + Update terracotta to 2.4.1 and exclude ssl classes
 + Update jasper2.1 to tag SJSAS-9_1-B58C-FCS-22_Aug_2007
 + Removal of unneeded dependencies from management, maven-plugin, naming &
   plus poms
 + Adding setUsername,setGroupname to setuid and mavenizing native build
 + UTF-8 for bayeux client
 + CVE-2007-5615 Added protection for response splitting with bad headers.
 + Cached user agents strings in the /org/mortbay/jetty/useragents resource
 + Make default time format for RequestLog match NCSA default
 + Use terracotta repo for build; make jetty a terracotta module
 + Fix patch for java5 to include cometd module
 + Added ConcatServlet to combine javascript and css
 + Add ability to persist sessions with HashSessionManager
 + Avoid FULL exception in window between blockForOutput and remote close
 + Added JPackage RPM support
 + Added JSON.Convertable
 + Updated README, test index.html file and jetty-plus.xml file
 + JETTY-259 SystemRoot set for windows CGI
 + JETTY-311 avoid json keywords
 + JETTY-376 allow anything but CRLF in reason string
 + JETTY-398 Allow same WADI Dispatcher to be used across multiple web-app
   contexts
 + JETTY-400 consume CGI stderr
 + JETTY-402 keep HashUserRealm in sync with file
 + JETTY-403 Allow long content length for range requests
 + JETTY-404 WebAppDeployer sometimes deploys duplicate webapp
 + JETTY-405 Default date formate for reqest log
 + JETTY-407 AJP handles unknown content length
 + JETTY-413 Make rolloveroutputstream timer daemon
 + JETTY-422 Allow <Property> values to be null in config files
 + JETTY-423 Ensure javax.servlet.forward parameters are latched on first
   forward
 + JETTY-425 Handle duplicate stop calls better
 + JETTY-430 improved cometd logging
 + JETTY-431 HttpClient soTimeout

jetty-6.1.5 - 19 July 2007
 + Upgrade to Jasper 2.1 tag SJSAS-9_1-B50G-BETA3-27_June_2007
 + Fixed GzipFilter for dispatchers
 + Fixed reset of reason
 + JETTY-392 updated LikeJettyXml example

jetty-6.1.5rc0 - 15 July 0200
 + update terracotta session clustering to terracotta 2.4
 + SetUID option to only open connectors before setUID.
 + Protect SslSelectChannelConnector from exceptions during close
 + Improved Request log configuration options
 + Added GzipFilter and UserAgentFilter
 + make OSGi manifests for jetty jars
 + update terracotta configs for tc 2.4 stable1
 + remove call to open connectors in jetty.xml
 + update links on website
 + make jetty plus example webapps use ContextDeployer
 + Dispatch SslEngine expiry (non atomic)
 + Make SLF4JLog impl public, add mbean descriptors
 + SPR-3682 - dont hide forward attr in include.
 + Upgrade to Jasper 2.1 tag SJSAS-9_1-B50G-BETA3-27_June_2007
 + JETTY-253 Improved graceful shutdown
 + JETTY-373 Stop all dependent lifecycles
 + JETTY-374 HttpTesters handles large requests/responses
 + JETTY-375 IllegalStateException when committed.
 + JETTY-376 allow spaces in reason string
 + JETTY-377 allow sessions to be wrapped with
   AbstractSesssionManager.SessionIf
 + JETTY-378 handle JVMs with non ISO/UTF default encodings
 + JETTY-380 handle pipelines of more than 4 requests!
 + JETTY-385 EncodeURL for new sessions from dispatch
 + JETTY-386 Allow // in file resources

jetty-6.1.4 - 15 June 2007
 + fixed early open() call in NIO connectors
 + JETTY-370 ensure maxIdleTime<=0 means connections never expire
 + JETTY-371 Fixed chunked HEAD response
 + JETTY-372 make test for cookie caching more rigorous

jetty-6.1.4rc1 - 10 June 2007
 + Work around IBM JVM socket close issue
 + moved documentation for jetty and jspc maven plugins to wiki
 + async client improvements
 + fixed handling of large streamed files
 + Fixed synchronization conflict SslSelectChannel and SelectChannel
 + Optional static content cache
 + JETTY-310 better exception when no filter file for cometd servlet
 + JETTY-323 handle htaccess without a user realm
 + JETTY-346 add wildcard support to extra scan targets for maven plugin
 + JETTY-355 extensible SslSelectChannelConnector
 + JETTY-357 cleaned up ssl buffering
 + JETTY-360 allow connectors, userRealms to be added from a <jettyConfig> for
   maven plugin
 + JETTY-361 prevent url encoding of dir listings for non-link text
 + JETTY-362 More object locks
 + JETTY-365 make needClientAuth work on SslSelectChannelConnector
 + JETTY-366 JETTY-368 Improved bayeux disconnect

jetty-6.1.4rc0 - 01 June 2007
 + Reorganized import of contrib modules
 + Unified JMX configuration
 + Updated slf4j version to 1.3.1
 + Updated junit to 3.8.2
 + Allow XmlConfiguration properties to be configured
 + Add (commented out) jspc precompile to test-webapp
 + Add slf4j-api for upgraded version
 + Change scope of fields for Session
 + Add ability to run cometd webapps to maven plugin
 + Delay ssl handshake until after dispatch in sslSocketConnector
 + Set so_timeout during ssl handshake as an option on SslSocketConnector
 + Optional send Date header. Server.setSendDateHeader(boolean)
 + update etc/jetty-ssl.xml with new handshake timeout setting
 + fixed JSP close handling
 + improved date header handling
 + fixed waiting continuation reset
 + JETTY-257 fixed comet cross domain
 + JETTY-309 fix applied to sslEngine
 + JETTY-317 rollback inclusion of cometd jar for maven plugin
 + JETTY-318 Prevent meta channels being created
 + JETTY-330 Allow dependencies with scope provided for jspc plugin
 + JETTY-335 SslEngine overflow fix
 + JETTY-337 deprecated get/setCipherSuites and added
   get/setExcludeCipherSuites
 + JETTY-338 protect isMoreInBuffer from destroy
 + JETTY-339 MultiPartFiler deletes temp files on IOException
 + JETTY-340 FormAuthentication works with null response
 + JETTY-344 gready fill in ByteArrayBuffer.readFrom
 + JETTY-345 fixed lost content with blocked NIO.
 + JETTY-347 Fixed type util init
 + JETTY-352 Object locks

jetty-6.1.3 - 04 May 2007
 + Handle CRLF for content in header optimization
 + JETTY-309 don't clear writable status until dispatch
 + JETTY-315 suppressed warning
 + JETTY-322 AJP13 cping and keep alive

jetty-6.1.2 - 01 May 2007
 + Improved unavailabile handling
 + sendError resets output state
 + Fixed session invalidation error in WadiSessionManager
 + Updated Wadi to version 2.0-M3
 + Added static member definition in WadiSessionManager
 + JETTY-322 fix ajp cpong response and close handling
 + JETTY-324 fix ant plugin
 + JETTY-328 updated jboss

jetty-6.1.2rc5 - 24 April 2007
 + set default keystore for SslSocketConnector
 + removed some compile warnings
 + Allow jsp-file to be / or /*
 + JETTY-305 delayed connection destroy
 + JETTY-309 handle close in multivalue connection fields.
 + JETTY-314 fix for possible NPE in Request.isRequestedSessionIdValid

jetty-6.1.2rc4 - 19 April 2007
 + JETTY-294 Fixed authentication reset
 + JETTY-299 handle win32 paths for object naming
 + JETTY-300 removed synchronized on dispatch
 + JETTY-302 correctly parse quoted content encodings
 + JETTY-303 fixed dual reset of generator
 + JETTY-304 Fixed authentication reset

jetty-6.1.2rc3 - 16 April 2007
 + Improved performance and exclusions for TLD scanning
 + MBean properties assume writeable unless marked RO
 + refactor of SessionManager and SessionIdManager for clustering
 + Improvements to allow simple setting of Cache-Control headers
 + AJP redirects https requests correctly
 + Fixed writes of unencoded char arrays.
 + JETTY-283 Parse 206 and 304 responses in client
 + JETTY-285 enable jndi for mvn jetty:run-war and jetty:run-exploded
 + JETTY-289 fixed javax.net.ssl.SSLException on binary file upload
 + JETTY-292 Fixed error page handler error pages
 + JETTY-293 fixed NPE on fast init
 + JETTY-294 Response.reset() resets headers as well as content
 + JETTY-295 Optional support of authenticated welcome files
 + JETTY-296 Close direct content inputstreams
 + JETTY-297 Recreate tmp dir on stop/start
 + JETTY-298 Names in JMX ObjectNames for context, servlets and filters

jetty-6.1.2rc2 - 27 March 2007
 + Enable the SharedStoreContextualiser for the WadiSessionManager(Database
   store for clustering)
 + AJP13 CPING request and CPONG response implemented
 + AJP13 Shutdown Request from peer implemented
 + AJP13 remoteUser, contextPath, servletPath requests implemented
 + Change some JNDI logging to debug level instead of info
 + Update jasper to glassfish tag SJSAS-9_1-B39-RC-14_Mar_2007
 + Optimized multi threaded init on startup servlets
 + Removed unneeded specialized TagLibConfiguration class from maven plugin
 + Refactor Scanner to increase code reuse with maven/ant plugins
 + Added RestFilter for PUT and DELETE from Aleksi Kallio
 + Make annotations work for maven plugin
 + JETTY-125 maven plugin: ensure test dependencies on classpath for
   <useTestClasspath>
 + JETTY-246 path encode cookies rather than quote
 + JETTY-254 prevent close of jar entry by bad JVMs
 + JETTY-256 fixed isResumed and work around JVM bug
 + JETTY-258 duplicate log message in ServletHandler
 + JETTY-260 Close connector before stop
 + JETTY-262 Allow acceptor thread priority to be adjusted
 + JETTY-263 Added implementation for authorizationType Packets
 + JETTY-265 Only quote cookie values if needed
 + JETTY-266 Fix deadlock with shutdown
 + JETTY-271 ResourceHandler uses resource for MimeType mapping
 + JETTY-272 Activate and Passivate events for sessions
 + JETTY-274 Improve flushing at end of request for blocking
 + JETTY-276 Partial fix for reset/close race
 + JETTY-277 Improved ContextHandlerCollection
 + JETTY-278 Session invalidation delay until no requests
 + JETTY-280 Fixed deadlock with two flushing threads
 + JETTY-284 Fixed stop connector race
 + JETTY-286 isIntegral and isConfidential methods overridden in
   SslSelectChannelConnector

jetty-6.1.2rc1 - 08 March 2007
 + TagLibConfiguration uses resource input stream
 + Improved handling of early close in AJP
 + add ajp connector jar to jetty-jboss sar
 + Improved Context setters for wadi support
 + fix Dump servlet to handle primitive array types
 + handle comma separated values for the Connection: header
 + Added option to allow null pathInfo within context
 + BoundedThreadPool queues rather than blocks excess jobs.
 + Support null pathInfo option for webservices deployed to jetty/jboss
 + Workaround to call SecurityAssocation.clear() for jboss webservices calls to
   ejbs
 + Ensure jetty/jboss uses servlet-spec classloading order
 + call preDestroy() after servlet/filter destroy()
 + Fix constructor for Constraint to detect wildcard role
 + Added support for lowResourcesIdleTime to SelectChannelConnector
 + JETTY-157 make CGI handle binary data
 + JETTY-175 JDBCUserRealm use getInt instead of getObject
 + JETTY-188 Use timer for session scavaging
 + JETTY-235 default realm name
 + JETTY-242 fix race condition with scavenging sessions when stopping
 + JETTY-243 FULL
 + JETTY-244 Fixed UTF-8 buffer overflow
 + JETTY-245 Client API improvements
 + JETTY-246 spaces in cookies
 + JETTY-248 setContentLength after content written
 + JETTY-250 protect attribute enumerations from modification
 + JETTY-252 Fixed stats handling of close connection
 + JETTY-254 prevent close of jar file by bad JVMs

jetty-6.1.2rc0 - 15 February 2007
 + JETTY-223 Fix disassociate of UserPrincipal on dispatches
 + JETTY-226 Fixed SSLEngine close issue
 + JETTY-232 Fixed use of override web.xml
 + JETTY-236 Buffer leak
 + JETTY-237 AJPParser Buffer Data Handling
 + JETTY-238 prevent form truncation
 + Patches from sybase for ClientCertAuthenticator
 + Coma separated cookies
 + Cometd timeout clients

jetty-6.1.2pre1 - 05 February 2007
 + JETTY-224 run build up to process-test before invoking jetty:run
 + Added error handling for incorrect keystore/truststore password in
   SslSelectChannelConnector
 + fixed bug with virtual host handling in ContextHandlerCollection
 + added win32service to standard build
 + refactored cometd to be continuation independent
 + allow ResourceHandler to use resource base from an enclosing ContextHandler

jetty-6.1.2pre0 - 01 February 2007
 + Fixed 1.4 method in jetty plus
 + Fixed generation of errors during jsp compilation for jsp-2.1
 + Added cometd jsonp transport from aabeling
 + Added terracotta cluster support for cometd
 + JETTY-213 request.isUserInRole(String) fixed
 + JETTY-215 exclude more transitive dependencies from tomcat jars for jsp-2.0
 + JETTY-216 handle AJP packet fragmentation
 + JETTY-218 handle AJP ssl key size and integer
 + JETTY-219 fixed trailing encoded chars in cookies
 + JETTY-220 fixed AJP content
 + JETTY-222 fix problem parsing faces-config.xml
 + add support for Annotations in servlet, filter and listener sources
 + improved writer buffering
 + moved JSON parser to util to support reuse
 + handle virtual hosts in ContextHandlerCollection
 + enable SslSelectChannelConnector to modify the SslEngine's client
   authentication settings

jetty-6.1.1 - 15 January 2007

jetty-6.1.1rc1 - 12 January 2007
 + Use timers for Rollover logs and scanner
 + JETTY-210 Build jsp-api-2.0 for java 1.4

jetty-6.1.1rc0 - 10 January 2007
 + Fixed unpacking WAR
 + extras/win32service download only if no JavaServiceWrapper exist
 + MultiPartFilter deleteFiles option
 + CGI servlet fails without exception
 + JETTY-209 Added ServletTester.createSocketConnector
 + JETTY-210 Build servlet-api-2.5 for java 1.4
 + JETTY-211 fixed jboss build
 + ensure response headers on AjaxFilter messsages turn off caching
 + start webapps on deployment with jboss, use isDistributed() method from
   WebAppContext
 + simplified chat demo

jetty-6.1.0 - 09 January 2007
 + Fixed unpacking WAR

jetty-6.1.0 - 05 January 2007
 + Improved config of java5 threadpool
 + Protect context deployer from Errors
 + Added WebAppContext.setCopyWebDir to avoid JVM jar caching issues.
 + GERONIMO-2677 refactor of session id handling for clustering
 + ServletTester sets content length
 + Added extras/win32service
 + JETTY-206 fixed AJP getServerPort and getRemotePort

jetty-6.1.0rc3 - 02 January 2007
 + JETTY-195 fixed ajp ssl_cert handling
 + JETTY-197 fixed getRemoteHost
 + JETTY-203 initialize ServletHandler if no Context instance
 + JETTY-204 setuid fix
 + setLocale does not use default content type
 + Use standard releases of servlet and jsp APIs.
 + implement resource injection and lifecycle callbacks declared in web.xml
 + extras/servlet-tester

jetty-6.1.0rc2 - 20 December 2006
 + AJP13Parser, throw IllegalStateException on unimplemented AJP13 Requests
 + ContextHandlerCollection is noop with no handlers
 + ensure servlets initialized if only using ServletHandler
 + fixed Jetty-197 AJP13 getRemoteHost()
 + Refactored AbstractSessionManager for ehcache
 + ensure classpath passed to jspc contains file paths not urls
 + JETTY-194 doubles slashes are significant in URIs
 + JETTY-167 cometd refactor
 + remove code to remove SecurityHandler if no constraints present
 + JETTY-201 make run-as work for both web container and ejb container in jboss
 + ensure com.sun.el.Messages.properties included in jsp-2.1 jar

jetty-6.1.0rc1 - 14 December 2006
 + simplified idle timeout handling
 + JETTY-193 MailSessionReference without authentication
 + JETTY-199 newClassPathResource
 + ensure unique name for ServletHolder instances
 + added cache session manager(pre-alpha)

jetty-6.1.0rc0 - 08 December 2006
 + JETTY-181 Allow injection of a java:comp Context
 + JETTY-182 Optionally set JSP classpath initparameter
 + Dispatcher does not protect javax.servlet attributes
 + DefaultHandler links virtual hosts.
 + Fixed cachesize on invalidate
 + Optimization of writers
 + ServletHandler allows non REQUEST exceptions to propogate
 + TCK fixes from Sybase:
 + Handle request content encodings
 + forward query attribute fix
 + session attribute listener
 + Servlet role ref
 + flush if content-length written
 + 403 for BASIC authorization failure
 + null for unknown named dispatches
 + JETTY-184 cometd connect non blocking
 + Support for RFC2518 102-processing response
 + JETTY-123 fix improved
 + Added org.mortbay.thread.concurrent.ThreadPool
 + Added extras/gwt
 + Fixed idle timeout
 + JETTY-189 ProxyConnection
 + Added spring ejb3 demo example
 + update jasper to glassfish SJSAS-9_1-B27-EA-07_Dec_2006
 + JETTY-185 tmp filename generation

jetty-6.1.0pre3 - 22 November 2006
 + fixed NIO endpoint flush. Avoid duplicate sends
 + CVE-2006-6969 Upgraded session ID generation to use SecureRandom
 + updated glassfish jasper to tag SJSAS-9_1-B25-EA-08_Nov_2006
 + Support TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 + JETTY-180 XBean support for context deploy
 + JETTY-154 Cookies are double quotes only
 + Expose isResumed on Continuations
 + Refactored AJP generator

jetty-6.0.2 - 22 November 2006
 + Moved all modules updates from 6.1pre2 to 6.0
 + Added concept of bufferred endpoint
 + Added conversion Object -> ObjectName for the result of method calls made on
   MBeans
 + Added DataFilter configuration to cometd
 + added examples/test-jaas-webapp
 + Added extraClassPath to WebAppContext
 + Added hierarchical destroy of mbeans
 + Added ID constructor to AbstractSessionManager.Session
 + added isStopped() in LifeCycle and AbstractLifeCycle
 + Added override descriptor for deployment of RO webapps
 + add <Property> replacement in jetty xml config files
 + alternate optimizations of writer (use -Dbuffer.writers=true)
 + Allow session cookie to be refreshed
 + Apply queryEncoding to getQueryString
 + CGI example in test webapp
 + change examples/test-jndi-webapp so it can be regularly built
 + Default soLinger is -1 (disabled)
 + ensure "" returned for ServletContext.getContextPath() for root context
 + ensure sessions nulled out on request recycle; ensure session null after
   invalidate
 + ensure setContextPath() works when invoked from jetty-web.xml
 + fixed NIO endpoint flush. Avoid duplicate sends
 + Fixed NPE in bio.SocketEndPoint.getRemoteAddr()
 + Fixed resource cache flushing
 + Fixed tld parsing for maven plugin
 + HttpGenerator can generate requests
 + Improved *-mbean.properties files and specialized some MBean
 + JETTY-118 ignore extra content after close.
 + JETTY-119 cleanedup Security optimizatoin
 + JETTY-123 handle windows UNC paths
 + JETTY-126 handle content > Integer.MAX_VALUE
 + JETTY-129 ServletContextListeners called after servlets are initialized
 + JETTY-151 Idle timeout only applies to blocking operations
 + JETTY-154 Cookies are double quotes only
 + JETTY-171 Fixed filter mapping
 + JETTY-172 use getName() instead of toString
 + JETTY-173 restore servletpath after dispatch
 + Major refactor of SelectChannel EndPoint for client selector
 + make .tag files work in packed wars
 + Plugin shutdown context before stopping it.
 + Refactored session lifecycle and additional tests
 + release resource lookup in Default servlet
 + (re)make JAAS classes available to webapp classloader
 + Reverted UnixCrypt to use coersions (that effected results)
 + Session IDs can change worker ID
 + Simplified ResourceCache and Default servlet
 + SocketConnector closes all connections in doStop
 + Upgraded session ID generation to use SecureRandom
 + updated glassfish jasper to tag SJSAS-9_1-B25-EA-08_Nov_2006
 + Support TLS_DHE_RSA_WITH_AES_256_CBC_SHA

jetty-5.1.14 - 09 August 2007
 + patched with correct version
 + JETTY-155 force close with content length.
 + JETTY-369 failed state in Container

jetty-5.1.13
 + Sourceforge 1648335: problem setting version for AJP13

jetty-5.1.12 - 22 November 2006
 + Added support for TLS_DHE_RSA_WITH_AES_256_CBC_SHA
 + Upgraded session ID generation to use SecureRandom
 + Quote single quotes in cookies
 + AJP protected against bad requests from mod_jk
 + JETTY-154 Cookies ignore single quotes

jetty-4.2.27 - 22 November 2006
 + Upgraded session ID generation to use SecureRandom
 + AJP protected against bad requests from mod_jk

jetty-6.1.0pre2 - 20 November 2006
 + Added extraClassPath to WebAppContext
 + Fixed resource cache flushing
 + Clean up jboss module licensing

jetty-6.1.0pre1 - 19 November 2006
 + Use ContextDeployer as main deployer in jetty.xml
 + Added extras/jboss
 + Major refactor of SelectChannel EndPoint for client selector
 + Fixed NPE in bio.SocketEndPoint.getRemoteAddr()
 + Reverted UnixCrypt to use coersions (that effected results)
 + JETTY-151 Idle timeout only applies to blocking operations
 + alternate optimizations of writer (use -Dbuffer.writers=true)
 + JETTY-171 Fixed filter mapping
 + JETTY-172 use getName() instead of toString
 + JETTY-173 restore servletpath after dispatch
 + release resource lookup in Default servlet
 + Simplified ResourceCache and Default servlet
 + Added override descriptor for deployment of RO webapps
 + Added hierarchical destroy of mbeans

jetty-6.1.0pre0 - 21 October 2006
 + add <Property> replacement in jetty xml config files
 + make .tag files work in packed wars
 + add hot deployment capability
 + ensure setContextPath() works when invoked from jetty-web.xml
 + ensure sessions nulled out on request recycle; ensure session null after
   invalidate
 + ensure "" returned for ServletContext.getContextPath() for root context
 + Fixed tld parsing for maven plugin
 + Improved *-mbean.properties files and specialized some MBean
 + Added conversion Object -> ObjectName for the result of method calls made on
   MBeans
 + JETTY-129 ServletContextListeners called after servlets are initialized
 + change examples/test-jndi-webapp so it can be regularly built
 + added isStopped() in LifeCycle and AbstractLifeCycle
 + fixed isUserInRole checking for JAASUserRealm
 + fixed ClassCastException in JAASUserRealm.setRoleClassNames(String[])
 + add a maven-jetty-jspc-plugin to do jspc precompilation
 + added examples/test-jaas-webapp
 + (re)make JAAS classes available to webapp classloader
 + CGI example in test webapp
 + Plugin shutdown context before stopping it.
 + Added concept of bufferred endpoint
 + Factored ErrorPageErrorHandler out of WebAppContext
 + Refactored ErrorHandler to avoid statics
 + Transforming classloader does not transform resources.
 + SocketConnector closes all connections in doStop
 + Improved charset handling in URLs
 + minor optimization of bytes to UTF8 strings
 + JETTY-112 ContextHandler checks if started
 + JETTY-113 support optional query char encoding on requests
 + JETTY-114 removed utf8 characters from code
 + JETTY-115 Fixed addHeader
 + added cometd chat demo
 + JETTY-119 cleanedup Security optimizatoin
 + Refactored session lifecycle and additional tests
 + JETTY-121 init not called on externally constructed servlets
 + JETTY-124 always initialize filter caches
 + JETTY-126 handle content > Integer.MAX_VALUE
 + JETTY-123 handle windows UNC paths
 + JETYY-120 SelectChannelConnector closes all connections on stop
 + Added ID constructor to AbstractSessionManager.Session
 + Allow session cookie to be refreshed
 + Added DataFilter configuration to cometd
 + Added extras/setuid to support start as root
 + Apply queryEncoding to getQueryString
 + JETTY-118 ignore extra content after close.
 + HttpGenerator can generate requests
 + Ported HtAccessHandler
 + Start of a client API
 + Session IDs can change worker ID
 + Default soLinger is -1 (disabled)
 + AJP Connector

jetty-5.1.11 - 08 October 2006
 + fixed ByteBufferOutputStream capacity calculation
 + Fixed AJP handling of certificate length (1494939)
 + Fixed AJP chunk header (1507377)
 + Fixed order of destruction event calls
 + Fix to HttpOutputStream from M.Traverso
 + Default servlet only uses setContentLength on wrapped responses

jetty-4.2.26 - 08 October 2006
 + Backport of AJP fixes

jetty-6.0.1 - 24 September 2006
 + fixed isUserInRole checking for JAASUserRealm
 + fixed ClassCastException in JAASUserRealm.setRoleClassNames(String[])
 + Improved charset handling in URLs
 + Factored ErrorPageErrorHandler out of WebAppContext
 + Refactored ErrorHandler to avoid statics
 + JETTY-112 ContextHandler checks if started
 + JETTY-114 removed utf8 characters from code
 + JETTY-115 Fixed addHeader
 + JETTY-121 init not called on externally constructed servlets
 + minor optimization of bytes to UTF8 strings
 + JETTY-113 support optional query char encoding on requests
 + JETTY-124 always initialize filter caches
 + JETYY-120 SelectChannelConnector closes all connections on stop

jetty-6.0.0 - 10 September 2006
 + SocketConnector closes all connections in doStop
 + Conveniance builder methods for listeners and filters
 + Transforming classloader does not transform resources.
 + Plugin shutdown context before stopping it.

jetty-6.0.0rc4 - 05 September 2006
 + bind jetty-env.xml entries to java:comp/env
 + JETTY-107 Poor cast in SessionDump demo.
 + Set charset on error pages

jetty-6.0.0rc3 - 01 September 2006
 + pulled 6.0.0 branch
 + JETTY-103
 + Move MailSessionReference to org.mortbay.naming.factories
 + Less verbose handling of BadResources from bad URLs
 + Avoid double error handling of Bad requests
 + don't warn for content length on head requests
 + JETTY-104 (raised glassfish ISSUE-1044) hide JSP forced path attribute
 + JETTY-68 Complete request after sendRedirect
 + Transferred the sslengine patch from the patches directory to extras

jetty-6.0.0rc2 - 25 August 2006
 + use mvn -Dslf4j=false jetty:run to disable use of slf4j logging with
   jdk1.4/jsp2.0
 + added org.apache.commons.logging package to system classes that can't be
   overridden by a webapp classloader
 + mvn -Djetty.port=x jetty:run uses port number given for the default
   connector
 + Fixed NPE when no resource cache
 + Refactored WebXmlConfiguration to allow custom web.xml resource
 + Moved more utility packagtes to the util jar
 + Direct buffer useage is optional
 + Destroy HttpConnection to improve buffer pooling
 + Timestamp in StdErrLog

jetty-6.0.0rc1 - 16 August 2006
 + Support for binding References and Referenceables and javax.mail.Sessions in
   JNDI
 + Added TransformingWebAppClassLoader for spring 2.0 byte code modification
   support
 + JETTY-90
 + Fixed FD leak for bad TCP acks. JETTY-63
 + JETTY-87
 + Change path mapping so that a path spec of /foo/* does not match /foo.bar :
   JETTY-88
 + add <requestLog> config param to jetty plugin
 + JETTY-85 JETTY-86 (TrustManager and SecureRandom are now configurable;
   better handling of null/default values)
 + parse jsp-property-group in web.xml for additional JSP servlet mappings
 + protected setContentType from being set during include
 + JETTY-91
 + added modules/spring with XmlBeanFactory configuration
 + removed support for lowResources from SelectChannelConnector
 + added start of cometd implementation (JSON only)
 + added start of grizzly connector
 + removed org.mortbay. from context system classes configuration
 + -DSTOP.PORT must be specified.
 + moved optional modules to extras
 + fixed bug that caused Response.setStatus to ignore the provided message
 + refactored resource cache
 + Allow direct filling of buffers for uncached static content.
 + Added simple ResourceHandler and FileServer example

jetty-6.0.0rc0 - 07 July 2006
 + change prefix from "jetty6" to just "jetty" for plugin: eg is now mvn
   jetty:run
 + allow <key> or <name> in <systemProperty> for plugin
 + simplified jetty.xml with new constructor injections
 + added setters and getters on SessionManager API for session related config:
   cookie name, url parameter name, domain, max age and path.
 + add ability to have a lib/ext dir from which to recursively add all jars and
   zips to the classpath
 + patch to allow Jetty to use JSP2.1 from Glassfish instead of Jasper from
   Tomcat
 + fixed classesDirectory param for maven plugin to be configurable
 + ensure explicitly set tmp directory called "work" is not deleted on exit
 + ensure war is only unpacked if war is newer than "work" directory
 + change name of generated tmp directory to be
   "Jetty_"+host+"_"+port+"_"+contextpath+"_"+virtualhost
 + Cleaned up idle expiry.
 + Ssl algorithm taken from system property
 + Added 8 random letters&digits to Jetty-generated tmp work dir name to ensure
   uniqueness
 + Simplify runtime resolution of JSP library for plugin
 + Ensure mvn clean cleans the build
 + Do not wrap EofException with EofException
 + reverse order for destroy event listeners
 + added StatisticsHandler and statistics on Connector.
 + Simplified Servlet Context API
 + Added maximum limit to filter chain cache.
 + refactor HttpChannelEndPoint in preparation for SslEngine
 + ContextHandlerCollection addContext and setContextClass
 + Discard excess bytes in header buffer if connection is closing
 + Updated javax code from
   http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/javax@417727
 + Threadpool does not need to be a LifeCycle
 + support graceful shutdown
 + Added WebAppContextClassLoader.newInstance to better support exensible
   loaders.
 + immutable getParameterMap()
 + support <load-on-startup> for SingleThreadModel
 + changed ServletContext.getResourcePaths()  to not return paths containing
   double slashes
 + fixed HttpGenerator convertion of non UTF-8: JETTY-82
 + added html module from jetty 5 - but deprecated until maintainer found

jetty-6.0.0beta17 - 01 June 2006
 + Added config to disable file memory mapped buffers for windows
 + Added Request.isHandled()
 + Refactored Synchronization of SelectChannelConnector
 + Recovered repository from Codehaus crash
 + ContextHandler.setConnectors replace setHosts
 + Connector lowResourceMaxIdleTime  implemented.
 + Default servlet checks for aliases resources
 + Added clover reports and enough tests to get >50% coverage
 + Fixed IE SSL issue.
 + Implemented runAs on servlets
 + Flush will flush all bytes rather than just some.
 + Protected WEB-INF and META-INF
 + don't reset headers during forward
 + BoundedThreadPool.doStop waits for threads to complete

jetty-6.0.0beta16 - 12 May 2006
 + remove a couple of System.err.printlns
 + replace backwards compativle API in UrlEncoded

jetty-6.0.0beta15 - 11 May 2006
 + Added Server attribute org.mortbay.jetty.Request.maxFormContentSize
 + Renamed NotFoundHandler to DefaultHandler
 + Added automatic scan of all WEB-INF/jetty-*.xml files for plugin
 + Added <scanTargets> parameter to allow other locations to scan for plugin
 + Major refactor to simplify Server and handler hierarchy
 + setSendServerVersion method added to Server to control sending of Server:
   http header
 + removed SelectBlockingChannelConnector (unmaintained)
 + Improved HttpException
 + Moved more resources to resources
 + Added ThrottlingFilter and fixed race in Continuations
 + Added taglib resources to 2.1 jsp api jar
 + Reset of timer task clears expiry
 + improved MBeanContainer object removal
 + ContextHandler.setContextPath can be called after start.
 + Fixed handling of params after forward
 + Added --version to start.jar
 + Added embedded examples
 + Simplified DefaultServlet static content buffering
 + readded BoundedThreadPool shrinking (and then fixed resulting deadlock)
 + improved MBean names
 + improved support for java5 jconsole
 + Session scavenger threads from threadpool
 + Thread names include URI if debug set
 + don't accept partial authority in request line.
 + enforce 204 and 304 have no content

jetty-6.0.0beta14 - 09 April 2006
 + ignore dirs and files that don't exist in plugin scanner
 + added support for stopping jetty using "java -jar start.jar --stop"
 + added configurability for webdefault.xml in maven plugin
 + adding InvokerServlet
 + added ProxyServlet
 + stop JDBCUserRealm coercing all credentials to String
 + Change tmp dir of plugin to work to be in line with jetty convention
 + Modify plugin to select JSP impl at runtime
 + Use start.config to select which JSP impl at runtime based on jdk version
 + Added JSP 2.1 APIs from apache
 + Added Jasper 2.1 as jesper (jasper without JCL)
 + Started readding logging to jesper using jdk logging
 + fixed priority of port from url over host header
 + implemented request.isUserInRole
 + securityHandler removed if not used.
 + moved test webapps to examples directory
 + improved contentType handling and test harness
 + fixed forward bug (treated as include)
 + fixed HttpField iterator
 + added jetty-util.jar module
 + added reset to Continuation

jetty-6.0.0beta12 - 16 March 2006
 + Fixed maven plugin JNDI for redeploys
 + Fixed tld discovery for plugin (search dependencies)
 + Fixed JettyPlus for root contexts
 + Fixed error handling in error page
 + Added JSP2.0 demos to test webapp
 + Upgraded jasper to 5.5.15
 + Added provider support to SslListener
 + Log ERROR for runtimeExceptions

jetty-6.0.0beta11 - 14 March 2006
 + added JAAS
 + added webapp-specific JNDI entries
 + added missing Configurations for maven plugin
 + fixed FORM authentication
 + moved dtd and xsd to standard javax location
 + added patch to use joda-time
 + refactored session ID management
 + refactored configuration files and start()
 + fixed ; decoding in URIs
 + Added HttpURI and improved UTF-8 parsing.
 + refactored writers and improved UTF-8 generation.

jetty-6.0.0beta10 - 25 February 2006
 + Added support for java:comp/env
 + Added support for pluggable transaction manager
 + Forward masks include attributes and vice versa
 + Fixed default servlet handling of includes
 + Additional accessors for request logging
 + added getLocalPort() to connector
 + Fixed content-type for range requests
 + Fix for sf1435795 30sec delay from c taylor
 + Fix for myfaces and include with close
 + Fix sf1431936 don't chunk the chunk
 + Fix http://jira.codehaus.org/browse/JETTY-6. hi byte reader
 + Updates javax to MR2 release

jetty-6.0.0beta9 - 09 February 2006
 + PathMap for direct context mapping.
 + Refactored chat demo and upgraded prototype.js
 + Continuation cleanup
 + Fixed unraw decoding of query string
 + Fixed dispatch of wrapped requests.
 + Fixed double flush of short content.
 + Added request log.
 + Added CGI servlet.
 + Force a tempdir to be set.
 + Force jasper scratch dir.
 + fixed setLocale bug sf1426940
 + Added TLD tag listener handling.

jetty-6.0.0beta8 - 24 January 2006
 + fixed dispatch of new session problem. sf:1407090
 + reinstated rfc2616 test harness
 + Handle pipeline requests without hangs
 + Removed queue from thread pool.
 + improved caching of content types
 + fixed bug in overloaded write method on HttpConnection (reported against
   Tapestry4.0)
 + hid org.apache.commons.logging and org.slf4j packages from webapp
 + maven-jetty6-plugin stopped transitive inclusion of log4j and
   commons-logging from commons-el for jasper
 + patch to remove spurious ; in HttpFields
 + improve buffer return mechanism.
 + conveniance addHandler removeHandler methods
 + maven-jetty6-plugin: ensure compile is done before invoking jetty
 + maven-jetty6-plugin: support all types of artifact dependencies

jetty-6.0.0Beta7
 + Fixed infinite loop with chunk handling
 + Faster header name lookup
 + removed singleton Container
 + reduced info verbosity
 + null dispatch attributes not in names
 + maven-jetty6-plugin added tmpDirectory property
 + maven-jetty6-plugin stopped throwing an error if there is no target/classes
   directory

jetty-6.0.0Beta6
 + Fixed issue with blocking reads
 + Fixed issue with unknown headers
 + optimizations

jetty-6.0.0Beta5
 + Moved to SVN
 + Fixed writer char[] creations
 + Added management module for mbeans

jetty-6.0.0Beta4
 + System property support in plugin
 + CVE-2006-2758 Fixed JSP visibility security issue.
 + Improved jetty-web.xml access to org.mortbay classes.
 + Jasper 5.5.12

jetty-6.0.0Beta3
 + Fixed error in block read
 + Named dispatch.
 + Fixed classloader issue with server classes

jetty-6.0.0Beta2
 + merged util jar back into jetty jar
 + Simpler continuation API
 + loosely coupled with JSP servlet
 + loosely coupled with SLF4J
 + Improved reuse of HttpField values and cookies.
 + Improved buffer return

jetty-6.0.0Beta1
 + Servlet 2.5 API
 + SSL connector
 + maven2 plugin
 + shutdown hook
 + refactored start/stop
 + Implemented all listeners
 + Error pages
 + Virtual hosts
 + Multiple select sets

jetty-6.0.0Beta0
 + Maven 2 build
 + Dispatcher parameters
 + UTF-8 encoding for URLs
 + Fixed blocking read

jetty-6.0.0APLPA3
 + Added demo for Continuations
 + Jasper and associated libraries.

jetty-6.0.0ALPHA2
 + Continuations - way cool way to suspend a request and retry later.
 + Dispatchers
 + Security

jetty-6.0.0ALPHA1
 + Filters
 + web.xml handling

jetty-6.0.0ALPHA0
 + Totally rearchitected and rebuilt, so 10 years of cruft could be removed!
 + Improved "dependancy injection" and "inversion of control" design of
   components
 + Improved "interceptor" design of handlers
 + Smart split buffer design allows large buffers to only be allocated to
   active connections. The resulting memory savings allow very large buffers to
   be used, which increases the chance of efficient asynchronous flushing and
   of avoiding chunking.
 + Optional use of NIO Buffering so that efficient direct buffers and memory
   mapped files can be used.
 + Optional use of NIO non-blocking scheduling so that threads are not
   allocated per connection.
 + Optional use of NIO gather writes, so that for example a HTTP header and a
   memory mapped
 + file may be sent as sent is a single operation.
 + Missing Security
 + Missing Request Dispatchers
 + Missing web.xml based configuration
 + Missing war support

jetty-5.1.11RC0 - 05 April 2006
 + stop JDBCUserRealm forcing all credentials to be String
 + force close with shutdownOutput for win32
 + NPE protection if desirable client certificates
 + Added provider support to SslListener
 + logging improvements for servlet and runtime exceptions
 + Fixed AJP handling of ;jsessionid.
 + improved contentType param handling

jetty-5.1.10 - 05 January 2006
 + Fixed path aliasing with // on windows.
 + Fix for AJP13 with multiple headers
 + Fix for AJP13 with encoded path
 + Remove null dispatch attributes from getAttributeNames
 + Put POST content default back to iso_8859_1. GET is UTF-8 still

jetty-4.2.25 - 04 January 2006
 + Fixed aliasing of // for win32

jetty-5.1.9 - 07 December 2005
 + Fixed wantClientAuth(false) overriding netClientAuth(true)

jetty-6.0.0betaX
 + See http://jetty.mortbay.org/jetty6 for 6.0 releases

jetty-5.1.8 - 07 December 2005
 + Fixed space in URL issued created in 5.1.6

jetty-5.1.7 - 07 December 2005

jetty-5.1.7rc0 - 06 December 2005
 + improved server stats
 + char encoding for MultiPartRequest
 + fixed merging of POST params in dispatch query string.
 + protect from NPE in dispatcher getValues
 + Updated to 2.6.2 xerces
 + JSP file servlet mappings copy JspServlet init params.
 + Prefix servlet context logs with org.mortbay.jetty.context
 + better support for URI character encodings
 + use commons logging jar instead of api jar.

jetty-5.1.6 - 18 November 2005
 + CVE-2006-2758 Fixed JSP visibility security issue.
 + Improved jetty-web.xml access to org.mortbay classes.

jetty-5.1.5 - 10 November 2005
 + Improved shutdown hook
 + Improved URL Decoding
 + Improved mapping of JSP files.

jetty-5.1.5rc2 - 07 October 2005
 + Reverted dispatcher params to RI rather than spec behaviour.
 + ProxyHandler can handle chained proxies
 + unsynchronized ContextLoader
 + ReFixed merge of Dispatcher params
 + public ServerMBean constructor
 + UTF-8 encoding for URLs
 + Response.setLocale will set locale even if getWriter called.

jetty-5.1.5rc1 - 23 August 2005
 + upgraded to commons logging 1.0.4
 + Release commons logging factories when stopping context.
 + Fixed illegal state with chunks and 100 continue - Tony Seebregts
 + Fixed PKCS12Import input string method
 + Fixed merge of Dispatcher parameters
 + Encoded full path in ResourceHandler directory listing
 + handle extra params after charset in header
 + Fixed 100-continues with chunking and early commit

jetty-5.1.5rc0 - 16 August 2005
 + Fixed component remove memory leak for stop/start cycles
 + Facade over commons LogFactory so that discovery may be avoided.
 + Applied ciphersuite patch from tonyj
 + Authenticators use servlet sendError
 + CGI sets SCRIPT_FILENAME
 + HttpTunnel timeout
 + NPE protection for double stop in ThreadedServer
 + Expect continues only sent if input is read.

jetty-5.1.4 - 05 June 2005
 + Fixed FTP close issue.
 + setup MX4J with JDK1.5 in start.config
 + set classloader during webapp doStop
 + NPE protection in ThreadedServer
 + ModelMBean handles null signatures
 + Change JAAS impl to be more flexible on finding roles

jetty-5.1.4rc0 - 19 April 2005
 + ServletHttpContext correctly calls super.doStop.
 + HttpServer delegates component handling to Container.
 + Allow ServletHandler in normal HttpContext again.
 + Stop start.jar putting current directory on classpath.
 + More protection from null classloaders.
 + Turn off web.xml validation for JBoss.

jetty-5.1.3 - 07 April 2005
 + Some minor code janitorial services

jetty-4.2.24 - 07 April 2005

jetty-5.1.3rc4 - 31 March 2005
 + Moved servlet request wrapping to enterContextScope for geronimo security
 + refixed / mapping for filters
 + Allow XmlConfiguration to start with no object.
 + updated to mx4j 3.0.1
 + rework InitialContextFactory to use static 'default' namespace
 + make java:comp/env immutable for webapps as per J2EE spec

jetty-5.1.3rc3 - 20 March 2005
 + removed accidental enablement of DEBUG for JettyPlus jndi in
   log4j.properties
 + fixed "No getter or setter found" mbean errors

jetty-5.1.3rc2 - 16 March 2005
 + Updated JSR154Filter for ERROR dispatch
 + Fixed context to _context refactory error

jetty-5.1.3rc1 - 13 March 2005
 + Fixed typo in context-param handling.
 + update to demo site look and feel.
 + Fixed principal naming in FormAuthenticator
 + JettyPlus updated to JOTM 2.0.5, XAPool 1.4.2

jetty-4.2.24rc1
 + Fixed principal naming in FormAuthenticator

jetty-5.1.3rc0 - 08 March 2005
 + Flush filter chain caches on servlet/filter change
 + Fixed rollover filename format bug
 + Fixed JSR154 error dispatch with explicit pass of type.
 + Allow system and server classes to be configured for context loader.
 + IOException if EOF read during chunk.
 + Fixed HTAccess crypt salt handling.
 + Added simple xpath support to XmlParser
 + Added TagLibConfiguration to search for listeners in TLDs.
 + Added SslListener for 1.4 JSSE API.
 + Fixed moderate load preventing ThreadPool shrinking.
 + Added logCookie and logLatency support to NCSARequestLog
 + Added new JAAS callback to allow extra login form fields in authentication

jetty-4.2.24rc0 - 08 March 2005
 + Back ported Jetty 5 ThreadedServer and ThreadPool
 + Added logCookie and logLatency support to NCSARequestLog

jetty-5.1.2 - 18 January 2005
 + Added id and ref support to XmlConfiguration
 + Cleaned up AbstractSessionManager synchronization.
 + Fixed potential concurrent login problem with JAAS
 + Apply patch #1103953

jetty-4.2.23 - 16 January 2005
 + Cleaned up AbstractSessionManager synchronization.
 + Fixed potential concurrent login problem with JAAS

jetty-5.1.2pre0 - 22 December 2004
 + Fixed case of Cookie parameters
 + Support Secure and HttpOnly in session cookies
 + Modified useRequestedID handling to only use IDs from other contexts
 + Added global invalidation to AbstractSessionManager
 + UnavailableException handling from handle
 + Fixed suffix filters

jetty-4.2.23RC0 - 17 December 2004
 + LineInput handles readers with small internal buffer
 + Added LogStream to capture stderr and stdout to logging
 + Support Secure and HttpOnly in session cookies
 + Build unsealed jars

jetty-5.1.1 - 01 December 2004

jetty-5.1.1RC1
 + Some minor findbugs code cleanups
 + Made more WebApplicationHandle configuration methods public.
 + Fixed ordering of filters with multiple interleaved mappings.
 + Allow double // within URIs
 + Applied patch for MD5 hashed credentials for MD5

jetty-5.1.1RC0 - 17 November 2004
 + fix for adding recognized EventListeners
 + fix commons logging imports to IbmJsseListener
 + added new contributed shell start/stop script
 + excluded ErrorPageHandler from standard build in extra/jdk1.2 build

jetty-5.1.0 - 14 November 2004

jetty-5.1.RC1 - 24 October 2004
 + Allow JSSE listener to be just confidential or just integral.
 + Fixed NPE for null contenttype
 + improved clean targets
 + when committed setHeader is a noop rather than IllegalStateException
 + Partially flush writers on every write so content length can be detected.
 + Build unsealed jars
 + default / mapping does not apply to Filters
 + many minor cleanups suggested from figbug utility
 + Allow multiple accepting threads

jetty-5.1.RC0 - 11 October 2004
 + Fixed many minor issues from J2EE 1.4 TCK testing See sf.net bugs 1031520 -
   1032205
 + Refactored, simplified and optimized HttpOutputStream
 + LineInput handles readers with small internal buffer
 + Added LogStream to capture stderr and stdout to logging
 + Added filter chain cache
 + Added JSR77 servlet statistic support
 + Refactored webapp context configurations
 + Added LifeCycle events and generic container.
 + Upgraded to ant-1.6 for jasper
 + Fixed HTAccessHandler
 + JBoss 4.0.0 support

jetty-5.0.0 - 10 September 2004

jetty-5.0.RC4 - 05 September 2004
 + Fixed configuration of URL alias checking
 + JettyJBoss: Use realm-name from web.xml if present, otherwise use
   security-domain from jboss-web.xml

jetty-5.0.RC3 - 28 August 2004
 + DIGEST auth handles qop, stale and maxNonceAge.
 + Less verbose warning for non validating xml parser.
 + fixed jaas logout for jetty-jboss
 + fixed deployment of ejb-link elements in web.xml with jboss
 + Update to jasper 5.0.27
 + Added parameters for acceptQueueSize and lowResources level.
 + Changed default URI encoding to UTF-8
 + Fixes to work with java 1.5
 + JettyPlus upgrade to XAPool 1.3.3. and HSQLDB 1.7.2
 + JettyPlus addition of pluggable DataSources
 + Always say close for HTTP/1.0 non keep alive.

jetty-4.2.22
 + fixed jaas logout for jetty-jboss integration
 + fixed deployment of ejb-link elements in web.xml for jboss
 + Added parameters for acceptQueueSize and lowResources level.

jetty-5.0.RC2 - 02 July 2004
 + Fixed DIGEST challenge delimiters
 + HTAccess calls UnixCrypt correctly
 + integrated jetty-jboss with jboss-3.2.4
 + Error dispatchers are always GET requests.
 + OPTIONS works for all URLs on default servlet
 + add JMX support for JettyPlus
 + add listing of java:comp/env for webapp with JMX
 + make choice of override of JNDI ENC entries: config.xml or web.xml
 + Default servlet may use only pathInfo for resource
 + Fixed session leak in j2ee
 + Fixed no-role security constraint combination.
 + Fix to use runas roles during servlet init and destroy
 + Fixed JAAS logout
 + HttpContext sendError for authentication errors

jetty-4.2.21 - 02 July 2004
 + integrated jetty-jboss with jboss-3.2.4
 + add JMX support for JettyPlus
 + add listing of java:comp/env for webapp with JMX
 + make choice of override of JNDI ENC entries: config.xml or web.xml
 + Fixed JAAS logout

jetty-5.0.RC1 - 24 May 2004
 + Changed to apache 2.0 license
 + added extra/etc/start-plus.config to set up main.class for jettyplus
 + maxFormContentLength may be unlimited with <0 value
 + Fixed HTTP tunnel timeout setting.
 + Improved handling of exception from servlet init.
 + FORM auth redirects to context on a re-auth
 + Handle multiple virutal hosts from JBoss 3.2.4RC2

jetty-4.2.20 - 22 May 2004
 + maxFormContentLength may be unlimited with <0 value
 + Fixed HTTP tunnel timeout setting.
 + Improved handling of exception from servlet init.
 + FORM auth redirects to context on a re-auth

jetty-5.0.0RC0 - 07 April 2004
 + Updated JettyPlus to JOTM 1.4.3 (carol-1.5.2, xapool-1.3.1)
 + ServletContext attributes wrap HttpContext attributes.
 + Factored out XML based config from WebApplicationContext
 + Improved RequestLog performance
 + Fixed j2se 1.3 problem with HttpFields
 + Default servlet respectes servlet path
 + Fixed setCharacterEncoding for parameters.
 + Fixed DOS problem
 + Worked around bad jboss URL handler in XMLParser
 + Forced close of connections over stop/start
 + ProxiedFor field support added to NCSARequestLog
 + Fixed Default servlet for non empty servlet paths
 + Updated mx4j to V2
 + Updated jasper to 5.0.19
 + Changed dist naming convention to lowercase

jetty-4.2.20RC0 - 07 April 2004
 + Worked around bad jboss URL handler in XMLParser
 + Forced close of connections over stop/start
 + HttpFields protected headers
 + ProxiedFor field support added to NCSARequestLog
 + Fixed Default servlet for non empty servlet paths
 + Changed dist naming convention to lowercase

jetty-4.2.19 - 19 March 2004
 + Fixed DOS attack problem

jetty-5.0.beta2 - 12 February 2004
 + Added skeleton JMX MBean for jetty plus
 + Fixed HEAD with empty chunk bug.
 + Fixed jetty.home/work handling
 + Fixed setDate thread safety
 + Fixed SessionManager init
 + Improved low thread handling
 + FileResource better handles non sun JVM
 + Monitor closes socket before exit
 + Updated to Japser 5.0.16
 + RequestDispatcher uses request encoding for query params
 + Fixed busy loop in threadpool run
 + Reorganized ServletHolder init
 + Added log4j context repository to jettyplus
 + NPE guard for no-listener junit deployment
 + Added experimental NIO listeners again.
 + fixed filter dispatch configuration.
 + fixed lazy authentication with FORMs

jetty-4.2.18 - 01 March 2004
 + Added log4j context repository to jettyplus
 + NPE guard for no-listener junit deployment
 + Improved log performance
 + Fixed j2se 1.3 problem with HttpFields
 + Suppress some more IOExceptions
 + Default servlet respectes servlet path

jetty-4.2.17 - 01 February 2004
 + Fixed busy loop in threadpool run
 + Reorganized ServletHolder init

jetty-4.2.16 - 30 January 2004
 + Fixed setDate multi-cpu race
 + Improved low thread handling
 + FileResource better handles non sun JVM
 + Fixed HttpTunnel for JDK 1.2
 + Monitor closes socket before exit
 + RequestDispatcher uses request encoding for query params
 + Update jasper to 4.1.29

jetty-5.0.beta1 - 24 December 2003
 + SecurityConstraints not reset by stop() on custom context
 + Fixed UnixCrypt handling in HTAccessHandler
 + Added patch for JBoss realm single sign on
 + Reorganized FAQ
 + Env variables for CGI
 + Removed support for old JBoss clustering

jetty-4.2.15 - 24 December 2003
 + SecurityConstraints not reset by stop() on custom context
 + Fixed UnixCrypt handling in HTAccessHandler
 + Added patch for JBoss realm single sign on
 + Environment variables for CGI
 + Removed support for old JBoss clustering

jetty-5.0.beta0 - 22 November 2003
 + Removed support for HTTP trailers
 + PathMap uses own Map.Entry impl for IBM JVMs
 + Use ${jetty.home}/work or WEB-INF/work for temp directories if present
 + Protect ThreadPool.run() from interrupted exceptions
 + Added org.mortbay.http.ErrorHandler for error pages.
 + Fixed init race in HttpFields cache
 + Allow per listener handlers
 + Added MsieSslHandler to handle browsers that don't grok persistent SSL (msie
   5)
 + Respect content length when decoding form content.
 + JBoss integration uses writer rather than stream for XML config handling
 + Expire pages that contain set-cookie as per RFC2109 recommendation
 + Updated jasper to 5.0.14beta
 + Removed the CMR/CMP distributed session implementation

jetty-4.2.15rc0 - 22 November 2003
 + PathMap uses own Map.Entry impl for IBM JVMs
 + Race in HttpFields cache
 + Use ${jetty.home}/work or WEB-INF/work for temp directories if present
 + Protect ThreadPool.run() from interrupted exceptions
 + Added org.mortbay.http.ErrorHandler for error pages.
 + JsseListener checks UserAgent for browsers that can't grok persistent SSL
   (msie5)
 + Removed the CMR/CMP distributed session implementation

jetty-4.2.14 - 04 November 2003
 + respect content length when decoding form content.
 + JBoss integration uses writer rather than stream for XML config handling
 + Fixed NPE in SSO
 + Expire pages that contain set-cookie as per RFC2109 recommendation

jetty-5.0.alpha3 - 19 October 2003
 + Reworked Dispatcher to better support cross context sessions.
 + Use File.toURI().toURL() when jdk 1.2 alternative is available.
 + Priority added to ThreadPool
 + replaced win32 service with http://wrapper.tanukisoftware.org
 + FileClassPath derived from walk of classloader hierarchy.
 + Implemented security constraint combinations
 + Set TransactionManager on JettyPlus datasources and pools
 + Fixed null pointer if no sevices configured for JettyPlus
 + Updated jasper and examples to 5.0.12
 + Lazy authentication if no auth constraint.
 + Restore servlet handler after dispatch
 + Allow customization of HttpConnections
 + Failed requests excluded from duration stats

jetty-4.2.14RC1 - 19 October 2003
 + Reworked Dispatcher to better support cross context sessions.
 + Added UserRealm.logout and arrange for form auth
 + Allow customization of HttpConnections
 + Failed requests excluded from

jetty-4.2.14RC0 - 07 October 2003
 + Correctly setup context classloader in cross context dispatch.
 + Put a semi busy loop into proxy tunnels for IE problems
 + Fixed handling of error pages for IO and Servlet exceptions
 + updated extra/j2ee to jboss 3.2.1+
 + Use File.toURI().toURL() when jdk 1.2 alternative is available.
 + cookie timestamps are in GMT
 + Priority on ThreadedServer
 + replaced win32 service with http://wrapper.tanukisoftware.org
 + Build fileclasspath from a walk of the classloaders
 + Set TransactionManager on JettyPlus datasources and pools
 + Fixed null pointer if no sevices configured for JettyPlus
 + Fixed comments with embedded double dashes on jettyplus.xml file

jetty-5.0.alpha2 - 19 September 2003
 + Use commons logging.
 + Use log4j if extra is present.
 + Improved JMX start.
 + Update jakarta examples
 + Correctly setup context classloader in cross context dispatch.
 + Turn off validation without non-xerces errors
 + minor doco updates.
 + moved mailing lists to sourceforge.
 + Put a semi busy loop into proxy tunnels for IE problems
 + MultipartRequest supports multi value headers.
 + XML entity resolution uses URLs not Resources
 + Implemented ServletRequestListeners as optional filter.
 + Moved error page mechanism to be webapp only.
 + Fixed error page handling of IO and Servlet exceptions.

jetty-5.0.alpha1 - 12 August 2003
 + Switched to mx4j
 + Improve combinations of Security Constraints
 + Implemented locale encoding mapping.
 + Synced with 4.2.12
 + Updated to Jasper 5.0.7
 + Server javadoc from war

jetty-5.0.alpha0 - 16 July 2003
 + Compiled against 2.4 servlet spec.
 + Implemented remote/local addr/port methods
 + Updated authentication so that a normal Principal is used.
 + updated to jasper 5.0.3
 + Implemented setCharaterEncoding
 + Implemented filter-mapping <dispatcher> element
 + Implemented Dispatcher forward attributes.

jetty-4.2.12 - 12 August 2003
 + Restore max inactive interval for session manager
 + Removed protection of org.mortbay.http attributes
 + Fixed parameter ordering for a forward request.
 + Fixed up HTAccessHandler
 + Improved error messages from ProxyHandler
 + Added missing S to some OPTIONS strings
 + Added open method to threaded server.
 + FORMAuthenticator does 403 with empty error page.
 + Fixed MIME types for chemicals
 + Padding for IE in RootNotFoundHandler

jetty-4.2.11 - 12 July 2003
 + Fixed race in servlet initialization code.
 + Cookie params all in lower case.
 + Simplified AJP13 connection handling.
 + Prevent AJP13 from reordering query.
 + Support separate Monitor class for start
 + Branched for Jetty 5 development.

jetty-4.2.10 - 07 July 2003
 + Updates to JettyPlus documentation
 + Updates to Jetty tutorial for start.jar, jmx etc

jetty-4.2.10pre2 - 04 July 2003
 + Improvement to JettyPlus config of datasources and connection pools
 + Addition of mail service for JettyPlus
 + Move to Service-based architecture for JettyPlus features
 + Re-implementation of JNDI
 + Many improvements in JettyPlus java:comp handling
 + Allow multiple security-role-ref elements per servlet.
 + Handle Proxy-Connection better
 + Cleaned up alias handling.
 + Confidential redirection includes query
 + handle multiple security role references
 + Fixed cookie handling for old cookies and safari
 + Restricted ports in ProxyHandler.
 + URI always encodes %
 + Session statistics
 + XmlConfiguration can get/set fields.

jetty-4.2.10pre1 - 02 June 2003
 + Fixed JSP code visibility problem introduced in Jetty-4.2.10pre0
 + Added stop.jar
 + Added SSO implementation for FORM authentication.
 + WebApplicationContext does not reassign defaults descriptor value.
 + Fixed AJP13 protocol so that request/response header enums are correct.
 + Fixed form auth success redirect after retry, introduced in 4.2.9rc1
 + Trace support is now optional (in AbstractHttpHandler).
 + Deprecated forced chunking.
 + Form authentication remembers URL over 403
 + ProxyHandler has improved test for request content
 + Removed support of org.mortbay.http.User role.
 + Fixed problem with shared session for inter context dispatching.

jetty-4.2.10pre0 - 05 May 2003
 + Moved Log4JLogSink into JettyPlus
 + Added ability to override jetty startup class by using -Djetty.server on
   runline
 + Incorporate JettyPlus jotm etc into build.
 + Massive reorg of the CVS tree.
 + Incorporate jetty extra and plus into build
 + Integrate with JAAS
 + Apply the append flag of RolloverFileOutputStream constructor.
 + RolloverFileOutputStream manages Rollover thread.
 + New look and feel for www site.
 + Fixed table refs in JDBCUserRealm.
 + Allow params in form auth URLs
 + Updated to jasper jars from tomcat 4.1.24
 + Allow query params in error page URL.
 + ProxyHandler checks black and white lists for Connect.
 + Merge multivalued parameters in dispatcher.
 + Fixed CRLF bug in MultiPartRequest
 + Warn if max form content size is reached.
 + getAuthType returns CLIENT_CERT instead of CLIENT-CERT.
 + getAuthType maps the HttpServletRequest final strings.
 + FORM Authentication is serializable for session distribution.

jetty-4.2.9 - 19 March 2003
 + Conditional headers check after /dir to /dir/ redirection.

jetty-4.2.9rc2 - 16 March 2003
 + Fixed build.xml for source release
 + Made rfc2068 PUT/POST Continues support optional.
 + Defaults descriptor has context classloader set.
 + Allow dispatch to j_security_check
 + Added X-Forwarded-For header in ProxyHandler
 + Updated included jmx jars

jetty-4.2.9rc1 - 06 March 2003
 + Work around URLClassloader not handling leading /
 + Dump servlet can load resources for testing now.
 + Added trust manager support to SunJsseListener.
 + Added support for client certs to AJP13.
 + Cleaned up includes
 + Removed checking for single valued headers.
 + Optional 2.4 behaviour for sessionDestroyed notification.
 + Stop proxy url from doing user interaction.
 + Turn request log buffering off by default.
 + Reduced default context cache sizes (Total 1MB file 100KB).
 + ProxyHandler has black and white host list.
 + Added requestlog to HttpContext.
 + Allow delegated creation of WebApplication derivations.
 + Check Data contraints before Auth constraints

jetty-4.2.8_01 - 18 February 2003
 + Patched first release of 4.2.8 with correct version number
 + Fixed CGI servlet to handle multiple headers.
 + Added a SetResponseHeadersHandler, can set P3P headers etc.
 + ProxyHandler can handle multiple cookies.
 + Fixed AdminServlet to handle changed getServletPath better.
 + Default servlet can have own resourceBase.
 + Rolled back SocketChannelListener to 4.2.5 version
 + Added option to resolve remote hostnames.  Defaults to off.
 + Added MBeans for Servlets and Filters
 + Moved ProxyHandler to the src1.4 tree

jetty-4.2.7 - 04 February 2003
 + Upgraded to JSSE 1.0.3_01 to fix security problem.
 + Fixed proxy tunnel for non persistent connections.
 + Relative sendRedirect handles trailing / correctly.
 + Changed PathMap to conform to / getServletPath handling.

jetty-4.2.6 - 24 January 2003
 + Improved synchronization on AbstractSessionManager.
 + Allow AJP13 buffers to be resized.
 + Fixed LineInput problem with expanded buffers.
 + ClientCertAuthentication updates request.
 + Fixed rel sendRedirects for root context.
 + Added HttpContext.setHosts to restrict context by real interface.
 + Added MBeans for session managers
 + Improved SocketChannelListener contributed.
 + Added version to HttpServerMBean.

jetty-4.2.5 - 14 January 2003
 + Fixed pathParam bug for ;jsessionid
 + Don't process conditional headers and ranges for includes
 + Added Log4jSink in the contrib directory.
 + Fixed requestedSessionId null bug.

jetty-4.2.4 - 04 January 2003
 + Fixed stop/start handling of servlet context
 + Reuse empty LogSink slots.
 + HTAccessHandler checks realm as well as htpassword.
 + Clear context listeners after stop.
 + Clear context attributes after stop.
 + Use requestedSessionId as default session ID.
 + Added MBeans for handlers
 + Upgraded jasper to 4.1.18

jetty-4.2.4rc0 - 12 December 2002
 + Simplified ThreadedServer
 + Use ThreadLocals for ByteArrayPool to avoid synchronization.
 + Use Version to reset HttpFields
 + Cheap clear for HttpFields
 + Fixed setBufferSize NPE.
 + Cleaned up some unused listener throws.
 + Handle chunked form data.
 + Allow empty host header.
 + Avoid optional 100 continues.
 + Limit form content size.
 + Handle = in param values.
 + Added HttpContext.flushCache
 + Configurable root context.
 + RootNotFoundHandler to help when no context found.
 + Update jasper to 4.1.16beta
 + Fixed dir listing from jars.
 + Dir listings in UTF8
 + Character encoding handling for GET requests.
 + Removed container transfer encoding handling.
 + Improved setBufferSize handling
 + Code logs objects rather than strings.
 + Better access to session manager.
 + Fixed isSecure and getScheme for SSL over AJP13
 + Improved ProxyHandler to the point is works well for non SSL.
 + Implemented RFC2817 CONNECT in ProxyHandler
 + Added gzip content encoding support to Default and ResourceHandler

jetty-4.2.3 - 02 December 2002
 + Removed aggressive threadpool shrinkage to avoid deadlock on SMP machines.
 + Fixed some typos
 + Added links to Jetty Powered page
 + Clean up of ThreadedServer.stop()
 + Updated bat scripts
 + Added PKCS12Import class to import PKCS12 key directly
 + removed old HttpContext.setDirAllowed()
 + added main() to org.mortbay.http.Version
 + Check form authentication config for leading /
 + Cleaner servlet stop to avoid extra synchronization on handle
 + org.mortbay.http.HttpContext.FileClassPathAttribute

jetty-4.2.2 - 20 November 2002
 + Fixed sendRedirect for non http URLS
 + Fixed URI query recycling for persistent connections
 + Fixed handling of empty headers
 + Added EOFException to reduce log verbosity on closed connections.
 + Avoided bad buffer status after closed connection.

jetty-4.2.1 - 18 November 2002
 + Fixed bad optimization in UrlEncoding
 + Re-enabled UrlEncoding test harnesses

jetty-4.2.0 - 16 November 2002
 + Fixed AJP13 buffer size.
 + Fixed remove listener bug.
 + Fixed include of Invoker servlet.
 + Restrict 304 responses to seconds time resolution.
 + Use IE date formatting for speed.
 + Removed jasper source and just include jars from 4.1.12
 + Worked around JVM1.3 bug for JSPs
 + Lowercase jsessionid for URLs only.
 + Made NCSARequestLog easier to extend.
 + Added definitions for RFC2518 WebDav response codes.
 + Removed remaining non portable getBytes() calls
 + Added upload demo to dump servlet.
 + Many more optimizations.

jetty-4.1.4 - 16 November 2002
 + Fixed ContextLoader parent delegation bug
 + Fixed remove SocketListener bug.
 + Fixed Invoker servlet for RD.include
 + Use IE date formatting for last-modified efficiency
 + Last modified handling uses second resolution.
 + Made NCSARequestLog simpler to extend.

jetty-4.2.0rc1 - 02 November 2002
 + Support default mime mapping defined by *
 + Recycling of HttpFields class.
 + Renamed Filter application methods.
 + Fixed firstWrite after commit.
 + Fixed ContextLoader parent delegation bug.
 + Fixed problem setting the size of chunked buffers.
 + Removed unused Servlet and Servlet-Engine headers.
 + Fixed servletpath on invoker for named servlets.
 + Fixed directory resource bug in JarFileResource.
 + Improved handling of 2 byte encoded characters within forms.

jetty-4.2.0rc0 - 24 October 2002
 + Greg's birthday release!
 + Added embedded iso8859 writer to HttpOutputStream.
 + Removed duplicate classes from jar
 + Fixed RolloverFileOutputStream without date.
 + Fixed SessionManager initialization
 + Added authenticator to admin.xml
 + Fixed Session timeout NPE.

jetty-4.1.3 - 24 October 2002
 + Fixed RolloverFileOutputStream without date.
 + Fixed SessionManager initialization
 + Added authenticator to admin.xml
 + Fixed Session timeout NPE.

jetty-4.0.6 - 24 October 2002
 + Clear interrupted status in ThreadPool
 + Fixed forward query string handling
 + fixed forward attribute handling for jsp-file servlets
 + Fixed setCharacterEncoding to work with getReader
 + Fixed handling of relative sendRedirect after forward.
 + Fixed virtual hosts temp directories.

jetty-4.2.0beta0 - 13 October 2002
 + New ThreadPool implementation.
 + New Buffering implementation.
 + New AJP13 implementation.
 + Removed Dispatcher dependancy on ServletHttpContext
 + getNamedDispatcher(null) returns containers default servlet.
 + unquote charset in content type
 + Stop/Start filters in declaration order.
 + Use "standard" names for default,jsp & invoker servlets.
 + Fixed caching of directories to avoid shared buffers.
 + Fixed bad log dir detection
 + Fix Session invalidation bug
 + Build without jmx
 + 404 instead of 403 for WEB-INF requests
 + FORM authentication sets 403 error page
 + Allow %3B encoded ; in URLs
 + Allow anonymous realm
 + Update jasper to 4.1.12 tag

jetty-4.1.2 - 13 October 2002
 + Some AJP13 optimizations.
 + getNamedDispatcher(null) returns containers default servlet.
 + unquote charset in content type
 + Stop/Start filters in declaration order.
 + Use "standard" names for default,jsp & invoker servlets.
 + Fixed caching of directories to avoid shared buffers.
 + Fixed bad log dir detection
 + Fix Session invalidation bug
 + Build without jmx
 + 404 instead of 403 for WEB-INF requests
 + FORM authentication sets 403 error page
 + Allow %3B encoded ; in URLs
 + Allow anonymous realm
 + Update jasper to 4.1.12 tag

jetty-4.1.1 - 30 September 2002
 + Fixed client scripting vulnerability with jasper2.
 + Merged LimitedNCSARequestLog into NCSARequestLog
 + Fixed space in resource name handling for jdk1.4
 + Moved launcher/src to src/org/mortbay/start
 + Fixed infinite recursion in JDBCUserRealm
 + Avoid setting sotimeout for optimization.
 + String comparison of If-Modified-Since headers.
 + Touch files when expanding jars
 + Deprecated maxReadTime.
 + Cache directory listings.

jetty-4.1.0 - 22 September 2002
 + Fixed CGI+windows security hole.
 + Fixed AJP13 handling of mod_jk loadbalancing.
 + Stop servlets in opposite order to start.
 + NCSARequest log buffered default
 + WEB-INF/classes before WEB-INF/lib
 + Sorted directory listings.
 + Handle unremovable tempdir.
 + Context Initparams to control session cookie domain, path and age.
 + ClientCertAuthenticator protected from null subjectDN
 + Added LimitedNCSARequestLog
 + Use javac -target 1.2 for normal classes

jetty-4.1.0RC6 - 14 September 2002
 + Don't URL encode FileURLS.
 + Improved HashUserRealm doco
 + FormAuthenticator uses normal redirections now.
 + Encode URLs of Authentication redirections.
 + Added logon.jsp for no cookie form authentication.
 + Extended Session API to pass request for jvmRoute handling
 + Fixed problem with AJP 304 responses.
 + Improved look and feel of demo
 + Cleaned up old debug.
 + Added redirect to welcome file option.

jetty-4.1.0RC5 - 08 September 2002
 + AJP13Listener caught up with HttpConnection changes.
 + Added commandPrefix init param to CGI
 + More cleanup in ThreadPool for idle death.
 + Improved errors for misconfigured realms.
 + Implemented security-role-ref for isUserInRole.

jetty-4.1.0RC4 - 30 August 2002
 + Included IbmJsseListener in the contrib directory.
 + Updated jasper2 to 4.1.10 tag.
 + Reverted to 302 for all redirections as all clients do not understand 303
 + Created statsLock sync objects to avoid deadlock when stopping.

jetty-4.1.0RC3 - 28 August 2002
 + Fixed security problem for suffix matching with trailing "/"
 + addWebApplications encodes paths to allow for spaces in file names.
 + Improved handling of PUT,DELETE & MOVE.
 + Improved handling of path encoding in Resources for bad JVMs
 + Added buffering to request log
 + Created and integrated the Jetty Launcher
 + Made Resource canonicalize it's base path for directories
 + Allow WebApplicationHandler to be used with other handlers.
 + Added defaults descriptor to addWebApplications.
 + Allow FORM auth pages to be within security constraint.

jetty-4.1.0RC2 - 20 August 2002
 + Conveninace setClassLoaderJava2Compliant method.
 + Clear interrupted status in ThreadPool
 + Fixed HttpFields cache overflow
 + Improved ByteArrayPool to handle multiple sizes.
 + Added HttpListener.bufferReserve
 + Use system line separator for log files.
 + Updated to Jasper2 (4_1_9 tag)
 + Build ant, src and zip versions with the release

jetty-4.1.0RC1 - 11 August 2002
 + Fixed forward query string handling
 + Fixed setCharacterEncoding to work with getReader
 + Fixed getContext to use canonical contextPathSpec
 + Improved the return codes for PUT
 + Made HttpServer serializable
 + Updated international URI doco
 + Updated jasper to CVS snapshot 200208011920
 + Fixed forward to jsp-file servlet
 + Fixed handling of relative sendRedirect after forward.

jetty-4.1.0RC0 - 31 July 2002
 + Fixed getRealPath for packed war files.
 + Changed URI default charset back to ISO_8859_1
 + Restructured Password into Password and Credentials
 + Added DigestAuthenticator
 + Added link to a Jetty page in Korean.
 + Added ExpiryHandler which can set a default Expires header.

jetty-4.0.5 - 31 July 2002
 + Fixed getRealPath for packed war files.
 + Reversed order of ServletContextListener.contextDestroyed calls
 + Fixed getRequestURI for RD.forward to return new URI.

jetty-4.1.B1 - 19 July 2002
 + Updated mini.http.jar target
 + CGI Servlet, pass all HTTP headers through.
 + CGI Servlet, catch and report program invocation failure status.
 + CGI Servlet, fixed suffix mapping problem.
 + CGI Servlet, set working directory for exec
 + Support HTTP/0.9 requests again
 + Reversed order of ServletContextListener.contextDestroyed calls
 + Moved dynamic servlet handling to Invoker servlet.
 + Moved webapp resource handling to Default servlet.
 + Sessions create attribute map lazily.
 + Added PUT,DELETE,MOVE support to webapps.
 + Added 2.4 Filter dispatching support.

jetty-3.1.9 - 15 July 2002
 + Allow doHead requests to be forwarded.
 + Fixed race in ThreadPool for minThreads <= CPUs

jetty-4.1.B0 - 13 July 2002
 + Added work around of JDK1.4 bug with NIO listener
 + Moved 3rd party jars to $JETTY_HOME/ext
 + Fixed ThreadPool bug when minThreads <= CPUs
 + close rather than disable stream after forward
 + Allow filter init to access servlet context methods.
 + Keep notFoundContext out of context mapping lists.
 + mod_jk FAQ
 + Fixed close problem with load balancer.
 + Stopped RD.includes closing response.
 + RD.forward changes getRequestURI.
 + NCSARequestLog can log to stderr

jetty-4.1.D2 - 24 June 2002
 + Support trusted external authenticators.
 + Moved jmx classes from JettyExtra to here.
 + Set contextloader during webapplicationcontext.start
 + Added AJP13 listener for apache integration.
 + Fixed ChunkableOutputStream close propagation
 + Better recycling of HttpRequests.
 + Protect session.getAttributeNames from concurrent modifications.
 + Allow comma separated cookies and headers
 + Back out Don't chunk 30x empty responses.
 + Conditional header tested against welcome file not directory.
 + Improved ThreadedServer stopping on bad networks
 + Use ThreadLocals to avoid unwrapping in Dispatcher.

jetty-4.0.4 - 23 June 2002
 + Back out change: Don't chunk 30x empty responses.
 + Conditional header tested against welcome file not directory.
 + Improved ThreadedServer stopping on bad networks

jetty-4.0.3 - 20 June 2002
 + WebapplicationContext.start sets context loader
 + Fixed close propagation of on-chunked output streams
 + Force security disassociation.
 + Better recycling of HttpRequests.
 + Protect session.getAttributeNames from concurrent modifications.
 + Allow session manager to be initialized when set.
 + Fixed japanese locale
 + Allow comma separated cookies and headers

jetty-4.1.D1 - 08 June 2002
 + Recycle servlet requests and responses
 + Added simple buffer pool.
 + Reworked output buffering to keep constant sized buffers.
 + Don't chunk 30x empty responses.
 + Fixed "" contextPaths in Dispatcher.
 + Removed race for the starting of session scavaging
 + Fixed /foo/../bar// bug in canonical path.
 + Merged ResourceBase and SecurityBase into HttpContext

jetty-4.0.2 - 06 June 2002
 + Fixed web.dtd references.
 + Fixed handler/context start order.
 + Added OptimizeIt plug
 + Fixed /foo/../bar// bug in canonical path.
 + Don't chunk 30x empty responses.
 + Fixed "" contextPaths in Dispatcher.
 + Removed race for the starting of session scavaging

jetty-3.1.8 - 06 June 2002
 + Made SecurityConstraint.addRole() require authentication.
 + Fixed singled threaded dynamic servlets
 + Fixed no slash context redirection.
 + Fixed /foo/../bar// bug in canonical path.

jetty-4.1.D0 - 05 June 2002
 + The 4.1 Series started looking for even more performance within the 2.3
   specification.
 + Removed the HttpMessage facade mechanism
 + BRAND NEW WebApplicationHandler & WebApplicationContext
 + Added TypeUtil to reduce Integer creation.
 + General clean up of the API for for MBean getters/setters.
 + Experimental CLIENT-CERT Authenticator
 + Restructured ResourceHandler into ResourceBase
 + Fixed web.dtd references.
 + Fixed handler/context start order.
 + Added OptimizeIt plug.

jetty-4.0.1 - 22 May 2002
 + Fixed contextclassloader on ServletContextEvents.
 + Support graceful stopping of context and server.
 + Fixed "null" return from getRealPath
 + OutputStreamLogSink config improvements
 + Updated jasper to 16 May snapshot

jetty-4.0.1RC2 - 14 May 2002
 + Better error for jre1.3 with 1.4 classes
 + Cleaned up RD query string regeneration.
 + 3DES Keylength was being reported as 0. Now reports 168 bits.
 + Implemented the run-as servlet tag.
 + Added confidential and integral redirections to HttpListener
 + Fixed ServletResponse.reset() to resetBuffer.

jetty-4.0.1RC1 - 29 April 2002
 + Improved flushing of chunked responses
 + Better handling if no realm configured.
 + Expand ByteBuffer full limit with capacity.
 + Fixed double filtering of welcome files.
 + Fixed FORM authentication auth of login page bug.
 + Fixed setTempDirectory creation bug
 + Avoid flushes during RequestDispatcher.includes

jetty-4.0.1RC0 - 18 April 2002
 + Updated Jasper to CVS snapshot from Apr 18 18:50:59 BST 2002
 + Pass pathParams via welcome file forward for jsessionid
 + Extended facade interfaces to HttpResponse.sendError
 + Moved basic auth handling to HttpRequest
 + AbstractSessionManager sets contextClassLoader for scavanging
 + Set thread context classloader for webapp load-on-startup inits
 + Added extract arg to addWebApplications
 + Fixed delayed response bug: Stopped HttpConnection consuming input from
   timedout connection.
 + DTD allows static "Get" and "Set" methods to be invoked.

jetty-4.0.0 - 22 March 2002
 + Updated tutorial configure version
 + Added IPAddressHandler for IP restrictions
 + Updated contributors.
 + Minor documentation updates.
 + Jetty.sh cygwin support

jetty-4.0.RC3 - 20 March 2002
 + Fixed ZZZ offset format to +/-HHMM
 + Updated history
 + JDBCUserRealm instantiates JDBC driver
 + ContextInitialized notified before load-on-startup servlets.
 + Suppress WriterOutputStream warning.
 + Changed html attribute order for mozilla quirk.

jetty-4.0.RC2 - 12 March 2002
 + Fixed security constraint problem with //
 + Fixed version for String XmlConfigurations
 + Fixed empty referrer in NCSA log.
 + Dont try to extract directories
 + Added experimental nio SocketChannelListener
 + Added skeleton load balancer
 + Fixed column name in JDBCUserRealm
 + Remove last of the Class.forName calls.
 + Removed redundant sessionID check.
 + Security FAQ
 + Disabled the Password EXEC mechanism by default

jetty-3.1.7 - 12 March 2002
 + Fixed security problem with constraints being bypassed with // in URLs

jetty-4.0.RC1 - 06 March 2002
 + Added ContentEncodingHandler for compression.
 + Fixed filter vs forward bug.
 + Improved efficiency of quality list handling
 + Simplified filter API to chunkable streams
 + XmlParser is validating by default. use o.m.x.XmlParser.NotValidating
   property to change.
 + contextDestroyed event sent before destruction.
 + Minor changes to make HttpServer work on J2ME CVM
 + Warn if jdk 1.4 classes used on JVM <1.4
 + WebApplication will use ContextLoader even without WEB-INF directory.
 + FileResource depends less on FilePermissions.
 + Call response.flushBuffer after service to flush wrappers.
 + Empty suffix for temp directory.
 + Contributors list as an image to prevent SPAM!
 + Fixed recursive DEBUG loop in Logging.
 + Updated jetty.sh to always respect arguments.

jetty-3.1.6 - 28 February 2002
 + Implemented 2.3 clarifications to security constraint semantics PLEASE
   REVIEW YOUR SECURITY CONSTRAINTS (see README).
 + Empty suffix for temp directory.
 + Fixed HttpFields remove bug
 + Set Listeners default scheme
 + LineInput can handle any sized marks
 + HttpResponse.sendError makes a better attempt at finding an error page.
 + Dispatcher.forward dispatches directly to ServletHolder to avoid premature
   exception handling.

jetty-4.0.B2 - 25 February 2002
 + Minor Jasper updates
 + Improve handling of unknown URL protocols.
 + Improved default jetty.xml
 + Adjust servlet facades for welcome redirection
 + User / mapping rather than /* for servlet requests to static content
 + Accept jetty-web.xml or web-jetty.xml in WEB-INF
 + Added optional JDK 1.4 src tree
 + o.m.u.Frame uses JDK1.4 stack frame handling
 + Added LoggerLogSink to direct Jetty Logs to JDK1.4 Log.
 + Start ServletHandler as part of the FilterHandler start.
 + Simplified addWebApplication
 + Added String constructor to XmlConfiguration.
 + Added org.mortbay.http.JDBCUserRealm
 + Init classloader for JspServlet
 + Slightly more agressive eating unused input from non persistent connection.

jetty-4.0.B1 - 13 February 2002
 + WriterOutputStream so JSPs can include static resources.
 + Suppress error only for IOExceptions not derivitives.
 + HttpConnection always eats unused bodies
 + Merged HttpMessage and Message
 + LineInput waits for LF after CF if seen CRLF before.
 + Added setClassLoader and moved getFileClassPath to HttpContext
 + Updated examples webapp from tomcat
 + getRequestURI returns encoded path
 + Servlet request destined for static content returns paths as default servlet

jetty-4.0.B0 - 04 February 2002
 + Implemented 2.3 security constraint semantics PLEASE REVIEW YOUR SECURITY
   CONSTRAINTS (see README).
 + Stop and remove NotFound context for HttpServer
 + HttpContext destroy
 + Release process builds JettyExtra
 + Welcome files may be relative
 + Fixed HttpFields remove bug
 + Added Array element to XMLConfiguration
 + Allow listener schemes to be set.
 + Added index links to tutorial
 + Renamed getHttpServers and added setAnonymous
 + Updated crimson to 1.1.3
 + Added hack for compat tests in watchdog for old tomcat stuff
 + Added AbstractSessionManager
 + Support Random Session IDs in HashSessionManager.
 + Common handling of TRACE
 + Updated tutorial and FAQ
 + Reduce object count and add hash width to StringMap
 + Factor out RolloverFileOutputStream from OutputStreamLogSink
 + Remove request logSink and replace with RequestLog using
   RolloverFileOutputStream
 + Handle special characters in resource file names better.
 + Welcome file dispatch sets requestURI.
 + Removed triggers from Code.

jetty-4.0.D4 - 14 January 2002
 + Prevent output after forward
 + Handle ServletRequestWrappers for Generic Servlets
 + Improved handling of UnavailableException
 + Extract WAR files to standard temp directory
 + URI uses UTF8 for % encodings.
 + Added BlueRibbon campaign.
 + RequestDispatcher uses cached resources for include
 + Improved HttpResponsse.sendError error page matching.
 + Fixed noaccess auth demo.
 + FORM auth caches UserPrincipal
 + Added isAuthenticated to UserPrincipal

jetty-4.0.D3 - 31 December 2001
 + Fixed cached filter wrapping.
 + Fixed getLocale again
 + Patch jasper to 20011229101000
 + Removed limits on mark in LineInput.
 + Corrected name to HTTP_REFERER in CGI Servlet.
 + Fixed UrlEncoding for % + combination.
 + Generalized temp file handling
 + Fixed ContextLoader lib handling.
 + DateCache handles misses better.
 + HttpFields uses DateCache more.
 + Moved admin port to 8081 to avoid JBuilder
 + Made Frame members private and fixed test harness
 + cookies with maxAge==0 expire on 1 jan 1970
 + setCookie always has equals

jetty-3.1.5 - 11 December 2001
 + setCookie always has equals for cookie value
 + cookies with maxage==0 expired 1 jan 1970
 + Fixed formatting of redirectURLs for NS4.08
 + Fixed ChunableInputStream.resetStream bug.
 + Ignore IO errors when trying to persist connections.
 + Allow POSTs to static resources.
 + stopJob/killStop in ThreadPool to improve stopping ThreadedServer on some
   platforms.
 + Branched at Jetty_3_1

jetty-4.0.D2 - 02 December 2001
 + Removed most of the old doco, which needs to be rewritten and added again.
 + Restructured for demo and test hierarchies
 + Fixed formatting of redirect URLs.
 + Removed ForwardHandler.
 + Removed Demo.java (until updated).
 + Made the root context a webapplication.
 + Moved demo docroot/servlets to demo directory
 + added addWebApplications auto discovery
 + Disabled last forwarding by setPath()
 + Removed Request set methods (will be replaced)
 + New event model to decouple from beans container.
 + Better handling of charset in form encoding.
 + Allow POSTs to static resources.
 + Fixed ChunableInputStream.resetStream bug.
 + Ignore IO errors when trying to persist connections.
 + stopJob/killStop in ThreadPool to improve stopping ThreadedServer on some
   platforms.

jetty-4.0.D1 - 14 November 2001
 + Fixed ServletHandler with no servlets
 + Fixed bug with request dispatcher parameters
 + New ContextLoader implementation.
 + New Dispatcher implementation
 + Added Context and Session Event Handling
 + Added FilterHolder
 + Added FilterHandler
 + Changed HandlerContext to HttpContext
 + Simplified ServletHandler
 + Removed destroy methods
 + Simplified MultiMap

jetty-4.0.D0 - 06 November 2001
 + Branched from Jetty_3_1 == Jetty_3_1_4
 + 2.3 Servlet API
 + 1.2 JSP API
 + Jasper from tomcat4
 + Start SessionManager abstraction.
 + Added examples webapp from tomcat4
 + Branched at Jetty_3_1

jetty-3.1.4 - 06 November 2001
 + Added RequestLogFormat to allow extensible request logs.
 + Support the ZZZ timezone offset format in DateCache
 + HTAccessHandler made stricter on misconfiguration
 + Generate session unbind events on a context.stop()
 + Default PathMap separator changed to ":,"
 + PathMap now ignores paths after ; or ? characters.
 + Remove old stuff from contrib that had been moved to extra
 + getRealPath accepts \ URI separator on platforms using \ file separator.

jetty-3.1.3 - 26 October 2001
 + Fix security problem with trailing special characters. Trailing %00 enabled
   JSP source to be viewed or other servlets to be bypassed.
 + Fixed several problems with external role authentication. Role
   authentication in JBoss was not working correctly and there were possible
   object leaks. The fix required an API change to UserPrinciple and UserRealm.
 + Allow a per context UserRealm instance.
 + Upgraded JSSE to 1.0.2
 + Improved FORM auth handling of role failure.
 + Improved Jasper debug output.
 + Improved ThreadedServer timeout defaults
 + Fixed binary files in CVS
 + Fixed Virtual hosts to case insensitive.
 + PathMap spec separator changed from ',' to ':'. May be set with
   org.mortbay.http.PathMap.separators system property.
 + Correct dispatch to error pages with javax attributes set.

jetty-3.1.2 - 13 October 2001
 + Fixed double entry on PathMap.getMatches
 + Fixed servlet handling of non session url params.
 + Fixed attr handling in XmlParser.toString
 + Fixed request log date formatting
 + Fixed NotFoundHandler handling of unknown methods
 + Fixed FORM Authentication username.
 + Fixed authentication role handling in FORM auth.
 + FORM authentication passes query params.
 + Added short delay to shutdown hook for JVM bug.
 + Added ServletHandler.sessionCount()
 + Added run target to ant
 + Changed 304 responses for Opera browser.
 + Changed JSESSIONID to jsessionid
 + Log OK state after thread low warnings.
 + Changed unsatisfiable range warnings to debug.
 + Further improvements in handling of shutdown.

jetty-3.1.1 - 27 September 2001
 + Fixed jar manifest format - patched 28 Sep 2001
 + Removed JDK 1.3 dependancy
 + Fixed ServletRequest.getLocale().
 + Removed incorrect warning for WEB-INF/lib jar files.
 + Handle requestdispatcher during init.
 + Use lowercase tags in html package to be XHTML-like.
 + Correctly ignore auth-constraint descriptions.
 + Reduced verbosity of bad URL errors from IIS virus attacks

jetty-3.1.0 - 21 September 2001
 + Added long overdue Tutorial documentation.
 + Improved some other documentation.
 + Fix ResourceHandler cache invalidate.
 + Fix ServletResponse.setLocale()
 + Fix reuse of Resource
 + Fix Jetty.bat for spaces.
 + Fix .. handling in URI
 + Fix REFFERER in CGI
 + Fix FORM authentication on exact patterns
 + Fix flush on stop bug in logs.
 + Fix param reading on CGI servlet
 + New simplified jetty.bat
 + Improved closing of listeners.
 + Optimized List creation
 + Removed win32 service.exe
 + Added HandlerContext.registerHost

jetty-3.1.rc9 - 02 September 2001
 + Added bin/orgPackage.sh script to change package names.
 + Changed to org.mortbay domain names.
 + Form auth login and error pages relative to context path.
 + Fixed handling of rel form authentication URLs
 + Added support for Nonblocking listener.
 + Added lowResourcePersistTimeMs for more graceful degradation when we run out
   of threads.
 + Patched Jasper to 3.2.3.
 + Added handlerContext.setClassPaths
 + Fixed bug with non cookie sessions.
 + Format cookies in HttpFields.

jetty-3.1.rc8 - 22 August 2001
 + Support WEB-INF/web-jetty.xml configuration extension for webapps
 + Allow per context log files.
 + Updated sponsors page
 + Added HttpServer statistics
 + Don't add notfound context.
 + Many major and minor optimizations:
 + ISO8859 conversion
 + Buffer allocation
 + URI pathAdd
 + StringMap
 + URI canonicalPath
 + OutputStreamLogSink replaces WriterLogSink
 + Separation of URL params in HttpHandler API.
 + Fixed handling of default mime types
 + Allow contextpaths without leading /
 + Removed race from dynamic servlet initialization.

jetty-3.1.rc7 - 09 August 2001
 + Fix bug in sendRedirect for HTTP/1.1
 + Added doco for Linux port redirection.
 + Don't persist connections if low on threads.
 + Added shutdown hooks to Jetty.Server to trap Ctl-C
 + Fixed bug with session ID generation.
 + Added FORM authentication.
 + Remove old context path specs
 + Added UML diagrams to Jetty architecture documentation.
 + Use Enumerations to reduce conversions for servlet API.
 + Optimized HttpField handling to reduce object creatiyon.
 + ServletRequest SSL attributes in line with 2.2 and 2.3 specs.
 + Dump Servlet displays cert chains
 + Fixed redirect handling by the CGI Servlet.
 + Fixed request.getPort for redirections from 80
 + Added utility methods to ServletHandler for wrapping req/res pairs.
 + Added method handling to HTAccessHandler.
 + ServletResponse.sendRedirect puts URLs into absolute format.

jetty-3.1.rc6 - 10 July 2001
 + Avoid script vulnerability in error pages.
 + Close persistent HTTP/1.0 connections on missing Content-Length
 + Use exec for jetty.sh run
 + Improved SSL debugging information.
 + KeyPairTool can now load cert chains.
 + KeyPairTool is more robust to provider setup.
 + Fixed bug in B64Code. Optimised B64Code.
 + Added Client authentication to the JsseListener
 + Fixed a problem with Netscape and the acrobat plugin.
 + Improved debug output for IOExceptions.
 + Updated to JSSE-1.0.2, giving full strength crypto.
 + Win32 Service uses Jetty.Server instead of HttpServer.
 + Added getResource to HandleContext.
 + WebApps initialize resourceBase before start.
 + Fixed XmlParser to handle xerces1.3 OK
 + Added Get element to the XmlConfiguration class.
 + Added Static calls to the XmlConfiguration class.
 + Added debug and logging config example to demo.xml
 + Moved mime types and encodings to property bundles.
 + RequestDispatch.forward() uses normal HandlerContext.handle() path if
   possible.
 + Cleaned up destroy handling of listeners and contexts.
 + Removed getConfiguration from LifeCycleThread to avoid JMX clash.
 + Cleaned up Win32 Service server creation.
 + Moved gimp image files to Jetty3Extra

jetty-3.1.rc5 - 01 May 2001
 + Added build target for mini.jetty.jar - see README.
 + Major restructing of packages to separate servlet dependancies. c.m.XML  -
   moved XML dependant classes from c.m.Util c.m.HTTP - No servlet or XML
   dependant classes: c.m.Jetty.Servlet - moved from c.m.HTTP.Handler.Servlet
   c.m.Servlet - received some servlet dependant classes from HTTP.
 + Added UnixCrypt support to c.m.U.Password
 + Added HTaccessHandler to authenitcate against apache .htaccess files.
 + Added query param handling to ForwardHandler
 + Added ServletHandler().setUsingCookies().
 + Optimized canonical path calculations.
 + Warn and close connections if content-length is incorrectly set.
 + Request log contains bytes actually returned.
 + Fixed handling of empty responses at header commit.
 + Fixed ResourceHandler handling of ;JSESSIONID
 + Fixed forwarding to null pathInfo requests.
 + Fixed handling of multiple cookies.
 + Fixed EOF handling in MultiPartRequest.
 + Fixed sync of ThreadPool idleSet.
 + Fixed jetty.bat classpath problems.

jetty-3.0.6 - 26 April 2001
 + Fixed handling of empty responses at header commit.
 + Fixed ResourceHandler handling of ;JSESSIONID
 + Fixed forwarding to null pathInfo requests.
 + Fixed EOF handlding in MultiPartRequest.
 + Fixed sync of ThreadPool idleSet.
 + Load-on-startup the JspServlet so that precompiled servlets work.

jetty-3.1.rc4 - 14 April 2001
 + Include full versions of JAXP and Crimson
 + Added idle thread getter to ThreadPool.
 + Load-on-startup the JspServlet so that precompiled servlets work.
 + Removed stray debug println from the Frame class.

jetty-3.0.5 - 14 April 2001
 + Branched from 3.1 trunk to fix major errors
 + Fixed LineInput bug EOF
 + Improved flush ordering for forwarded requests.
 + Turned off range handling by default until bugs resolved
 + Don't chunk if content length is known.
 + fixed getLocales handling of quality params
 + Created better random session ID
 + Resource handler strips URL params like JSESSION.
 + Fixed session invalidation unbind notification to conform with spec
 + Load-on-startup the JspServlet so that precompiled servlets work.

jetty-3.1.rc3 - 09 April 2001
 + Implemented multi-part ranges so that acrobat is happy.
 + Simplified multipart response class.
 + Improved flush ordering for forwarded requests.
 + Improved ThreadPool stop handling
 + Frame handles more JIT stacks.
 + Cleaned up handling of exceptions thrown by servlets.
 + Handle zero length POSTs
 + Start session scavenger if needed.
 + Added ContentHandler Observer to XmlParser.
 + Allow webapp XmlParser to be observed for ejb-ref tags etc.
 + Created better random session ID

jetty-3.1.rc2 - 30 March 2001
 + Lifecycle.start() may throw Exception
 + Added MultiException to throw multiple nested exceptions.
 + Improved logging of nested exceptions.
 + Only one instance of default MIME map.
 + Use reference JAXP1.1 for XML parsing.y
 + Version 1.1 of configuration dtd supports New objects.
 + Improved handling of Primitive classes in XmlConfig
 + Renamed getConnection to getHttpConnection
 + fixed getLocales handling of quality params
 + fixed getParameter(name) handling for multiple values.
 + added options to turn off ranges and chunking to support acrobat requests.

jetty-3.1.rc1 - 18 March 2001
 + Moved JMX and SASL handling to Jetty3Extra release
 + Fixed problem with ServletContext.getContext(uri)
 + Added Jetty documentation pages from JettyWiki
 + Cleaned up build.xml script
 + Minimal handling of Servlet.log before initialization.
 + Various SSL cleanups
 + Resource handler strips URL params like JSESSION.

jetty-3.1.rc0 - 23 February 2001
 + Added JMX management framework.
 + Use Thread context classloader as default context loader parent.
 + Fixed init order for unnamed servlets.
 + Fixed session invalidation unbind notification to conform with spec
 + Improved handling of primitives in utilities.
 + Socket made available via HttpConnection.
 + Improved InetAddrPort and ThreadedServer to reduce DNS lookups.
 + Dynamic servlets may be restricted to Context classloader.
 + Reoganized packages to allowed sealed Jars
 + Changed getter and setter methods that did not conform to beans API.

jetty-3.0.4 - 23 February 2001
 + Fixed LineInput bug with split CRLF.

jetty-3.0.3 - 03 February 2001
 + Fixed pipelined request buffer bug.
 + Handle empty form content without exception.
 + Allow Log to be disabled before initialization.
 + Included new Jetty Logo
 + Implemented web.xml servlet mapping to a JSP
 + Fixed handling of directories without trailing /

jetty-3.0.2 - 13 January 2001
 + Replaced ResourceHandler FIFO cache with LRU cache.
 + Greatly improved buffering in ChunkableOutputStream
 + Padded error bodies for IE bug.
 + Improved HTML.Block efficiency
 + Improved jetty.bat
 + Improved jetty.sh
 + Handle unknown status reasons in HttpResponse
 + Ignore included response updates rather than IllegalStateException
 + Removed classloading stats which were causing circular class loading
   problems.
 + Allow '+' in path portion of a URL.
 + Try ISO8859_1 encoding if can't find ISO-8859-1
 + Restructured demo site pages.
 + Context specific security permissions.
 + Added etc/jetty.policy as example policy file.

jetty-3.0.1 - 20 December 2000
 + Fixed value unbind notification for session invalidation.
 + Removed double null check possibility from ServletHolder

jetty-3.0.0 - 17 December 2000
 + Improved jetty.sh logging
 + Improved dtd resolution in XML parser.
 + Fixed taglib parsing
 + Fixed rel path handling in default configurations.
 + Optional extract war files.
 + Fixed WriterLogSink init bug
 + Use inner class to avoid double null check sync problems
 + Fixed rollover bug in WriterLogSink

jetty-3.0.0.rc8 - 13 December 2000
 + Optional alias checking added to FileResource.  Turned on by default on all
   platforms without the "/" file separator.
 + Mapped *.jsp,*.jsP,*.jSp,*.jSP,*.Jsp,*.JsP,*.JSp,*.JSP
 + Tidied handling of ".", ".." and "//" in resource paths
 + Protected META-INF as well as WEB-INF in web applications.
 + Jetty.Server catches init exceptions per server
 + getSecurityHandler creates handler at position 0.
 + SysV unix init script
 + Improved exit admin handling
 + Change PathMap handling of /* to give precedence over suffix mapping.
 + Forward to welcome pages rather than redirect.
 + Removed special characters from source.
 + Default log options changed if in debug mode.
 + Removed some unused variables.
 + Added ForwardHandler
 + Removed security constraint on demo admin server.
 + Patched jasper to tomcat 3.2.1

jetty-3.0.0.rc7 - 02 December 2000
 + Fixed security problem with lowercase WEB-INF uris on windows.
 + Extended security constraints (see README and WebApp Demo).
 + Set thread context classloader during handler start/stop calls.
 + Don't set MIME-Version in response.
 + Allow dynamic servlets to be served from /
 + Handle multiple inits of same servlet class.
 + Auto add a NotFoundHandler if needed.
 + Added NotFoundServlet
 + Added range handling to ResourceHandler.
 + CGI servlet handles not found better.
 + WEB-INF protected by NotFoundServlet rather than security constraint.
 + PUT, MOVE disabled in WebApplication unless defaults file is passed.
 + Conditionals apply to puts, dels and moves in ResourceHandler.
 + URIs accept all characters < 0xff.
 + Set the AcceptRanges header.
 + Depreciated RollOverLogSink and moved functionality to an improved
   WriterLogSink.
 + Changed log options to less verbose defaults.
 + ThreadedServer.forceStop() now makes a connection to itself to handle
   non-premptive close.
 + Double null lock checks use ThreadPool.__nullLockChecks.
 + Split Debug servlet out of Admin Servlet.
 + Added Com.mortbay.HTTP.Handler.Servlet.Context.LogSink attribute to Servlet
   Context. If set, it is used in preference to the system log.

jetty-3.0.0.rc6 - 20 November 2000
 + RequestDispatcher.forward() only resets buffer, not headers.
 + Added ServletWriter that can be disabled.
 + Resource gets systemresources from it's own classloader.
 + don't include classes in release.
 + Allow load-on-startup with no content.
 + Fixed RollOverFileLogSink bug with extra log files.
 + Improved Log defaults
 + Don't start HttpServer log sink on add.
 + Admin servlet uses unique links for IE.
 + Added Win32 service support
 + Reduced risk of double null check sync problem.
 + Don't set connection:close for normal HTTP/1.0 responses.
 + RequestDispatcher new queries params replace old.
 + Servlet init order may be negative.
 + Corrected a few of the many spelling mistakes.
 + Javadoc improvements.
 + Webapps serve dynamics servlets by default.
 + Warn for missing WEB-INF or web.xml
 + Sessions try version 1 cookies in set-cookie2 header.
 + Session cookies are given context path
 + Put extra server and servlet info in header.
 + Version details in header can be suppressed with System property
   java.com.mortbay.HTTP.Version.paranoid
 + Prevent reloading dynamic servlets at different paths.
 + Implemented resource aliases in HandlerContext - used by Servlet Context
 + Map tablib configuration to resource aliases.
 + Implemented customizable error pages.
 + Simple stats in ContextLoader.
 + Allow HttpMessage state to be manipulated.
 + Allow multiple set cookies.

jetty-3.0.0.rc5 - 12 November 2000
 + Default writer encoding set by mime type if not explicitly set.
 + Relax webapp rules, accept no web.xml or no WEB-INF
 + Pass flush through ServletOut
 + Avoid jprobe race warnings in DateCache
 + Allow null cookie values
 + Servlet exceptions cause 503 unavailable rather than 500 server error
 + RequestDispatcher can dispatch static resources.
 + Merged DynamicHandler into ServletHandler.
 + Added debug form to Admin servlet.
 + Implemented servlet load ordering.
 + Moved JSP classpath hack to ServletHolder
 + Removed Makefile build system.
 + Many javadoc cleanups.

jetty-2.4.9 - 12 November 2000
 + HttpListener ignore InterruptedIOExceptions
 + HttpListener default max idle time = 20s
 + HtmlFilter handles non default encodings
 + Writing HttpRequests encodes path
 + HttpRequest.write uses ISO8859_1 encoding.

jetty-3.0.0.rc4 - 06 November 2000
 + Provide default JettyIndex.properties
 + Fixed mis-synchronization in ThreadPool.stop()
 + Fixed mime type mapping bug introduced in RC3
 + Ignore more IOExceptions (still visible with debug).

jetty-3.0.0.rc3 - 05 November 2000
 + Changed ThreadPool.stop for IBM 1.3 JVM
 + Added bin/jetty.sh run script.
 + upgraded build.xml to ant v1.2
 + Set MaxReadTimeMs in all examples
 + Further clean up of the connection close actions
 + Moved unused classes from com.mortbay.Util to com.mortbay.Tools in new
   distribution package.
 + Handle mime suffixes containing dots.
 + Added gz tgz tar.gz .z mime mappings.
 + Fixed default mimemap initialization bug
 + Optimized persistent connections by recycling objects
 + Added HandlerContext.setHttpServerAccess for trusted contexts.
 + Set the thread context class loader in HandlerContext.handle
 + Prevent servlet setAttribute calls to protected context attributes.
 + Removed redundant context attributes.
 + Implemented mime mapping in webapplications.
 + Strip ./ from relative resources.
 + Added context class path dynamic servlet demo

jetty-3.0.0.rc2 - 29 October 2000
 + Replaced ISO-8859-1 literals with StringUtil static
 + Pass file based classpath to JspServlet (see README).
 + Prevented multiple init of ServletHolder
 + ErlEncoding treats params without values as empty rather than null.
 + Accept public DTD for XmlConfiguration (old style still supported).
 + Cleaned up non persistent connection close.
 + Accept HTTP/1. as HTTP/1.0 (for netscape bug).
 + Fixed thread name problem in ThreadPool

jetty-3.0.0.rc1 - 22 October 2000
 + Added simple admin servlet.
 + Added CGI to demo
 + Added HashUserRealm and cleaned up security constraints
 + Added Multipart request and response classes from Jetty2
 + Moved and simplified ServletLoader to ContextLoader.
 + Initialize JSP with classloader.
 + All attributes in javax. java. and com.mortbay. name spaces to be set.
 + Partial handling of 0.9 requests.
 + removed Thread.destroy() calls.
 + Cleaned up exception handling.

jetty-2.4.8 - 23 October 2000
 + Fixed bug with 304 replies with bodies.
 + Improved win32 make files.
 + Fixed closing socket problem

jetty-3.0.B05 - 18 October 2000
 + Improved null returns to get almost clean watchdog test.
 + Cleaned up response committing and flushing
 + Handler RFC2109 cookies (like any browser handles them!)
 + Added default webapp servlet mapping /servlet/name/*
 + Improved path spec interpretation by looking at 2.3 spec
 + Implemented security-role-ref for servlets
 + Protected servletConfig from downcast security problems
 + Made test harnesses work with ant.
 + improved ant documentation.
 + Removed most deprecation warnings
 + Fixed JarFileResource to handle jar files without directories.
 + Implemented war file support
 + Java2 style classloading
 + Improved default log format for clarity.
 + Separated context attributes and initParams.

jetty-3.0.B04 - 12 October 2000
 + Restricted context mapping to simple model for servlets.
 + Fixed problem with session ID in paths
 + Added modified version of JasperB3.2 for JSP
 + Moved FileBase to docroot
 + Merged and renamed third party jars.
 + Do not try multiple servlets for a request.
 + Implemented Context.getContext(uri)
 + Added webdefault.xml for web applications.
 + Redirect to index files, so index.jsp works.
 + Filthy hack to teach jasper JspServer Jetty classpath

jetty-3.0.B03 - 09 October 2000
 + Expanded import package.*; lines
 + Expanded leading tabs to spaces
 + Improved Context to Handler contract.
 + Parse but not handler startup ordering in web applications.
 + Send request log via a LogSink
 + Added append mode in RolloverFileLogSink
 + Made LogSink a Lifecycle interface
 + Improved handler toString
 + Redirect context only paths.
 + Pass object to LogSink
 + Implemented request dispatching.
 + Redo dynamic servlets handling
 + Improved Log rollover.
 + Simplified path translation and real path calculation.
 + Catch stop and destroy exceptions in HttpServer.stop()
 + Handle ignorable spaces in XmlConfiguration
 + Handle ignorable spaces in WebApplication
 + Warn about explicit sets of WebApplication
 + Remove 411 checks as IE breaks this rule after redirect.
 + Removed last remnants JDK 1.1 support
 + Added release script

jetty-2.4.7 - 06 October 2000
 + Allow Objects to be passed to LogSink
 + Set content length on errors for keep alive.
 + Added encode methods to URI
 + Improved win32 build
 + fixes to SSL doco
 + Support key and keystore passwords
 + Various improvements to  ServletDispatch, PropertyTree and associated
   classes.

jetty-3.0.B02 - 24 August 2000
 + Fixed LineInput bug with SSL giving CR pause LF.
 + Fixed HTTP/1.0 input close bug
 + Fixed bug in TestRFC2616
 + Improved ThreadedServer stop and destroy
 + Use resources in WebApplication
 + Added CGI servlet

jetty-3.0.B01 - 21 August 2000
 + SSL implemented with JsseListener
 + Partial implementation of webapp securitycontraints
 + Implemented more webapp configuration
 + Switched to the aelfred XML parser from microstar, which is only partially
   validating, but small and lightweight

jetty-2.4.6 - 16 August 2000
 + Turn Linger off before closing sockets, to allow restart.
 + JsseListener & SunJsseListener added and documented
 + com.mortbay.Util.KeyPairTool added to handle openSSL SSL keys.
 + Minor changes to compile with jikes.
 + Added passive mode methods to FTP

jetty-3.0.A99 - 10 August 2000
 + Implemented jetty.xml configuration
 + Added Xmlconfiguration utility
 + ServletLoader simplied and uses ResourcePath
 + Replaced FileHandler with ResourceHandler
 + Use SAX XML parsing instead of DOM for space saving.
 + Removed FileBase. Now use ResourceBase instead
 + Added Resource abstraction
 + Make it compile cleanly with jikes.
 + Re-added commented out imports for JDK-1.1 compile

jetty-3.0.A98 - 20 July 2000
 + Implemented Jetty demos and Site as Web Application.
 + Implemented WebApplicationContext
 + Switched to JDK1.2 only
 + ServletRequest.getServerPort() returns 80 rather than 0
 + Fixed constructor to RolloverFileLogSink
 + Improved synchronization on LogSink
 + Allow HttpRequest.toString() handles bad requests.

jetty-3.0.A97 - 13 July 2000
 + Tempory request log implementation
 + Less verbose debug
 + Better tuned SocketListener parameters
 + Started RequestDispatcher implementation.
 + Added WML mappings
 + Fixed makefiles for BSD ls
 + Fixed persistent commits with no content (eg redirect+keep-alive).
 + Implemented servlet isSecure().
 + Implemented servlet getLocale(s).
 + Formatted version in server info string.
 + Protect setContentLength from a late set in default servlet HEAD handling.
 + Added error handling to LifeCycleThread
 + implemented removeAttribute on requests

jetty-2.4.5 - 09 July 2000
 + Don't mark a session invalid until after values unbound.
 + Formatted version in server info.
 + Added HtmlExpireFilter and removed response cache revention from HtmlFilter.
 + Fixed transaction handling in JDBC wrappers

jetty-3.0.A96 - 27 June 2000
 + Fixed bug with HTTP/1.1 Head reqests to servlets.
 + Supressed un-needed chunking EOF indicators.

jetty-3.0.A95 - 24 June 2000
 + Fixed getServletPath for default "/"
 + Handle spaces in file names in FileHandler.

jetty-3.0.A94 - 19 June 2000
 + Implemented Sessions.
 + PathMap exact matches can terminate with ; or # for URL sessions and
   targets.
 + Added HandlerContext to allow grouping of handlers into units with the same
   file, resource and class configurations.
 + Cleaned up commit() and added complete() to HttpResponse
 + Updated license to clarify that commercial usage IS OK!

jetty-3.0.A93 - 14 June 2000
 + Major rethink! Moved to 2.2 servlet API
 + Lots of changes and probably unstable

jetty-3.0.A92 - 07 June 2000
 + Added HTML classes to jar
 + Fixed redirection bug in FileHandler

jetty-2.4.4 - 03 June 2000
 + Many debug call optimizations
 + Added RolloverFileLogSink
 + Improved LogSink configuration
 + Support System.property expansions in PropertyTrees.
 + Added uk.org.gosnell.Servlets.CgiServlet to contrib
 + HttpRequest.setRequestPath does not null pathInfo.
 + BasicAuthHandler uses getResourcePath so it can be used behind request
   dispatching
 + Added HTML.Composite.replace
 + FileHandler implements IfModifiedSince on index files.
 + Added build-win32.mak

jetty-3.0.A91 - 03 June 2000
 + Improved LogSink mechanism
 + Implemented realPath and getResource methods for servlets.
 + Abstracted ServletHandler
 + Simplified HttpServer configuration methods and arguments
 + Simplified class loading
 + Added HTML classes from Jetty2

jetty-3.0.A9 - 07 May 2000
 + Improvided finally handling of output end game.
 + Fixed double chunking bug in SocketListener.
 + File handler checks modified headers on directory indexes.
 + ServletLoader tries unix then platform separator for zip separator.

jetty-3.0.A8 - 04 May 2000
 + Servlet2_1 class loading re-acrchitected. See README.
 + Moved Sevlet2_1 handler to com.mortbay.Servlet2_1
 + addCookie takes an int maxAge rather than a expires date.
 + Added LogSink extensible log architecture.
 + Code.ignore only outputs when debug is verbose.
 + Added Tenlet class for reverse telnet.

jetty-2.4.3 - 04 May 2000
 + Pass Cookies with 0 max age to browser.
 + Allow CRLF in UrlEncoded

jetty-2.4.2 - 23 April 2000
 + Added LogSink and FileLogSink classes to allow extensible Log handling.
 + Handle nested RequestDispatcher includes.
 + Modified GNUJSP to prevent close in nested requests.
 + Added GNUJSP to JettyServer.prp file.

jetty-3.0.A7 - 15 April 2000
 + Include java 1.2 source hierarchy
 + removed excess ';' from source
 + fixed flush problem with chunked output for IE5
 + Added InetGateway to help debug IE5 problems
 + added removeValue method to MultiMap

jetty-2.4.1 - 09 April 2000
 + Removed debug println from ServletHolder.
 + Set encoding before exception in FileHandler.
 + Fixed bug in HtmlFilter for tags split between writes.

jetty-3.0.A6 - 09 April 2000
 + Integrated skeleton 2.1 Servlet container
 + Improved portability of Frame and Debug.
 + Dates forced to use US locale
 + Removed Converter utilities and InetGateway.
 + added bin/useJava2Collections to convert to JDK1.2

jetty-2.4.0 - 24 March 2000
 + Upgraded to gnujsp 1.0.0
 + Added per servlet resourceBase configuration.
 + Absolute URIs are returned by getRequestURI (if sent by browser).
 + Improved parsing of stack trace in debug mode.
 + Implemented full handling of cookie max age.
 + Moved SetUID native code to contrib hierarchy
 + Form parameters only decoded for POSTs
 + RequestDispatcher handles URI parameters
 + Fixed bug with RequestDispatcher.include()
 + Fixed caste problem in UrlEncoded
 + Fixed null pointer in ThreadedServer with stopAll
 + Added VirtualHostHandler for virtual host handling
 + Added doc directory with a small start

jetty-2.3.5 - 25 January 2000
 + Fixed nasty bug with HTTP/1.1 redirects.
 + ProxyHandler sends content for POSTs etc.
 + Force locale of date formats to US.
 + Fixed expires bug in Cookies
 + Added configuration option to turn off Keep-Alive in HTTP/1.0
 + Allow configured servlets to be auto reloaded.
 + Allow properties to be configured for dynamic servlets.
 + Added contrib/com/kiwiconsulting/jetty JSSE SSL adaptor to release.

jetty-2.3.4 - 18 January 2000
 + include from linux rather than genunix for native builds
 + Fixed IllegalStateException handling in DefaultExceptionHandler
 + MethodTag.invoke() is now public.
 + Improved HtmlFilter.activate header modifications.
 + Cookie map keyed on domain as well as name and path.
 + DictionaryConverter handles null values.
 + URI decodes applies URL decoding to the path.
 + Servlet properties allow objects to be stored.
 + Fixed interaction with resourcePaths and proxy demo.

jetty-3.0.A5 - 19 October 1999
 + Use ISO8859_1 instead of UTF8 for headers etc.
 + Use char array in UrlEncoded.decode
 + Do our own URL string encoding with 8859-1
 + Replaced LF wait in LineInput with state boolean.

jetty-2.3.3 - 19 October 1999
 + Replaced UTF8 encoding with ISO-8859-1 for headers.
 + Use UrlEncoded for form parameters.
 + Do our own URL encoding with ISO-8859-1
 + HTTP.HTML.EmbedUrl uses contents encoding.

jetty-2.3.2 - 17 October 1999
 + Fixed getReader bug with HttpRequest.
 + Updated UrlEncoded with Jetty3 version.

jetty-3.0.A4 - 16 October 1999
 + Request attributes
 + Basic Authentication Handler.
 + Added LF wait after CR to LineInput.
 + UTF8 in UrlDecoded.decodeString.

jetty-2.3.1 - 14 October 1999
 + Force UTF8 for FTP commands
 + Force UTF8 for HTML
 + Changed demo servlets to use writers in preference to outputstreams
 + NullHandler/Server default name.name.PROPERTIES to load
   prefix/name.name.properties
 + Use UTF8 in HTTP headers
 + Added Oracle DB adapter
 + Added assert with no message to Code
 + ThreadedServer calls setSoTimeout(_maxThreadIdleMs) on accepted sockets.
   Idle reads will timeout.
 + Prevented thread churn on idle server.
 + HTTP/1.0 Keep-Alive (about time!).
 + Fixed GNUJSP 1.0 resource bug.

jetty-3.0.A3 - 14 October 1999
 + Added LifeCycle interface to Utils implemented by ThreadPool,
   ThreadedServer, HttpListener & HttpHandler
 + StartAll, stopAll and destroyAll methods added to HttpServer.
 + MaxReadTimeMs added to ThreadedServer.
 + Added service method to HttpConnection for specialization.

jetty-3.0.A2 - 13 October 1999
 + UTF8 handling on raw output stream.
 + Reduced flushing on writing response.
 + Fixed LineInput problem with repeated CRs
 + Cleaned up Util TestHarness.
 + Prevent entity content for responses 100-199,203,304
 + Added cookie support and demo.
 + HTTP/1.0 Keep-alive (about time!)
 + Virtual Hosts.
 + NotFound Handler
 + OPTION * Handling.
 + TRACE handling.
 + HEAD handling.

jetty-3.0.A1 - 12 October 1999
 + LineInput uses own buffering and uses character encodings.
 + Added MultiMap for common handling of multiple valued parameters.
 + Added parameters to HttpRequest
 + Quick port of FileHandler
 + Setup demo pages.
 + Added PathMap implementing mapping as defined in the 2.2 API specification
   (ie. /exact, /prefix/*, *.extention & default ).
 + Added HttpHandler interface with start/stop/destroy lifecycle
 + Updated HttpListener is start/stop/destroy lifecycle.
 + Implemented simple extension architecture in HttpServer.

jetty-3.0.A0 - 09 October 1999
 + Started fresh repository in CVS
 + Moved com.mortbay.Base classes to com.mortbay.Util
 + Cleanup of UrlEncoded, using 1.2 Collections.
 + Cleanup of URI, using 1.2 Collections.
 + Extended URI to handle absolute URLs
 + Cleanup of LineInput, using 1.2 Collections.
 + Moved HttpInput/OutputStream to ChunkableInput/OutputStream.
 + Cleaned up chunking code to use LineInput and reduce buffering.
 + Added support for transfer and content encoding filters.
 + Added support for servlet 2.2 outbut buffer control.
 + Generalized notification of outputStream events.
 + Split HttpHeader into HttpFields and HttpMessage.
 + HttpMessage supports chunked trailers.
 + HttpMessage supports message states.
 + Added generalized HTTP Connection.
 + Cleanup of HttpRequest and decoupled from Servlet API
 + Cleanup and abstraction of ThreadPool.
 + ThreadedServer based on ThreadPool.
 + Cleanup of HttpResponse and decoupled from Servlet API
 + Created RFC2616 test harness.
 + gzip and deflate request transfer encodings
 + TE field coding and trailer handler
 + HttpExceptions now produce error pages with specific detail of the
   exception.

jetty-2.3.0 - 05 October 1999
 + Added SetUID class with native Unix call to set the effective User ID.
 + FTP closes files after put/get.
 + FTP uses InetAddress of command socket for data socket.

jetty-2.3.0A - 22 September 1999
 + Added GNUJSP 1.0 for the JSP 1.0 API.
 + Use javax.servlet classes from JWSDK1.0
 + Added "Powered by Jetty" button.
 + ServerContext available to HtmlFilters via context param
 + Made session IDs less predictable and removed race.
 + Added BuildJetty.java file.
 + Expanded tabs to spaces in source.

jetty-2.2.8 - 15 September 1999
 + Fixed bug in Element.attribute with empty string values.
 + Made translation of getRequestURI() optional.
 + Removed recursion from TranslationHandler
 + Added disableLog() to turn off logging.
 + Allow default table attributes to be overriden.
 + Improved quoting in HTML element values

jetty-2.2.7 - 09 September 1999
 + Reverted semantics of getRequestURI() to return untranslated URI.
 + Added GzipFilter for content encoding.
 + Added default row, head and cell elements to Table.
 + FileHandler passes POST request through if the file does not exist.

jetty-2.2.6 - 05 September 1999
 + New implementation of ThreadPool, avoids a thread leak problem.
 + Fixed Cookie max age order of magnitude bug.
 + Cookies always available from getCookies.
 + Cookies parameter renamed to CookiesAsParameters
 + HttpRequest.getSession() always returns a session as per the latest API
   spec.
 + Added destroy() method on all HttpHandlers.
 + ServletHandler.destroy destroys all servlets.
 + FileHandler does not server files ending in '/'
 + Ignore duplicate single valued headers, rather than reply with bad request,
   as IE4 breaks the rules.
 + Allow the handling of getPathTranslated to be configured in ServletHandler.
 + Removed JRUN options from ServletHandler configuration.
 + Added ServletRunnerHandler to the contrib directories.
 + Updated HTML package to better support CSS:
 + cssClass, cssID and style methods added to element.
 + SPAN added to Block
 + media added to Style
 + class StyleLink added.

jetty-2.2.5 - 19 August 1999
 + Fixed bug with closing connections in ThreadedServer
 + Made start and stop non final in ThreadedServer
 + Better default handling of ServletExceptions
 + Always close connection after a bad request.
 + Set Expires header in HtmlFilter.
 + Don't override the cookie as parameter option.
 + Limited growth in MultiPartResponse boundary.
 + Improved error messages from Jetty.Server.
 + Close loaded class files so Win32 can overwrite them before GC (what a silly
   file system!).

jetty-2.2.4 - 02 August 1999
 + ThreadedServer can use subclasses of Thread.
 + Better help on Jetty.Server
 + HttpRequests may be passed to HttpFilter constructors.
 + HtmlFilter blanks IfModifiedSince headers on construction
 + Fixed bugs in HtmlFilter parser and added TestHarness.
 + Improved cfg RCS script.

jetty-2.2.3 - 27 July 1999
 + Fixed parser bug in HtmlFilter
 + Made setInitialize public in ServletHolder
 + Improved performance of com.mortbay.HTML.Heading
 + Added stop call to HttpServer, used by Exit Servlet.
 + Simplified JDBC connection handling so that it works with Java1.2 - albeit
   less efficiently.
 + FileHandler defaults to allowing directory access.
 + JDBC tests modified to use cloudscape as DB.

jetty-2.2.2 - 22 July 1999
 + Fixed bug in HtmlFilter that prevented single char buffers from being
   written.
 + Implemented getResourceAsStream in FileJarServletLoader
 + Fixed bug with CLASSPATH in FileJarServletLoader after attempt to load from
   a jar.
 + Fixed bug in com.mortbay.Util.IO with thread routines.
 + Moved more test harnesses out of classes.
 + File handler passes through not allowed options for non existant files.
 + NotFoundHandler can repond with SC_METHOD_NOT_ALLOWED.
 + Improved com.mortbay.Base.Log handling of different JVMs
 + Minor fixes to README

jetty-2.2.1 - 18 July 1999
 + Comma separate header fields.
 + Protect against duplicate single valued headers.
 + Less verbose debug in PropertyTree
 + Ignore IOException in ThreadedServer.run() when closing.
 + Limit maximum line length in HttpInputStream.
 + Response with SC_BAD_REQUEST rather than close in more circumstances
 + Handle continuation lines in HttpHeader.
 + HtmlFilter resets last-modified and content-length headers.
 + Implemented com.mortbay.Util.IO as a ThreadPool
 + Decoupled ExceptionHandler configuration from Handler stacks. Old config
   style will produce warning and Default behavior. See new config file format
   for changes.
 + Added TerseExceptionHandler
 + Added optional resourceBase property to HttpConfiguration. This is used as a
   URL prefix in the getResource API and was suggested by the JSERV and Tomcat
   implementors.

jetty-2.2.0 - 01 July 1999
 + Improved feature description page.
 + Added Protekt SSL HttpListener
 + Moved GNUJSP and Protekt listener to a contrib hierarchy.
 + ThreadedServer.stop() closes socket before interrupting threads.
 + Exit servlet improved (a little).
 + Fixed some of the javadoc formatting.

jetty-2.2.Beta4 - 29 June 1999
 + FileHandler flushes files from cache in DELETE method.
 + ThreadedServer.stop() now waits until all threads are stopped.
 + Options "allowDir" added to FileHandler.
 + Added getGlobalProperty to Jetty.Server and used this to configure default
   page type.
 + Updated README.txt
 + Restructured com.mortbay.Jetty.Server for better clarity and documentation.
 + Added comments to configuration files.
 + Made ServerSocket and accept call generic in ThreadedServer for SSL
   listeners.
 + Altered meaning of * in PropertyTree to assist in abbreviated configuration
   files.
 + Added JettyMinimalDemo.prp as an example of an abbreviated configuration.
 + Expanded Mime.prp file
 + Added property handling to ServletHandler to read JRUN servlet configuration
   files.

jetty-2.2.Beta3 - 22 June 1999
 + Re-implemented ThreadedServer to improve and balance performance.
 + Added file cache to FileHandler
 + Implemented efficient version of ServletContext.getResourceAsStream() that
   does not open a new socket connection (as does getResource()).
 + LookAndFeelServlet uses getResourceAsStream to get the file to wrap. This
   allows it to benefit from any caching done and to wrap arbitrary content
   (not just files).
 + Restructure demo so that LookAndFeel content comes from simple handler
   stack.
 + Fixed file and socket leaks in Include and Embed tags.
 + Ran dos2unix on all text files
 + Applied contributed patch of spelling and typo corrections
 + Added alternate constructors to HTML.Include for InputStream.
 + Server.shutdown() clears configuration so that server may be restarted in
   same virtual machine.
 + Improved Block.write.
 + Fixed bug in HttpResponse flush.

jetty-2.2.Beta2 - 12 June 1999
 + Added all write methods to HttpOutputStream$SwitchOutputStream
 + Added com.mortbay.Jetty.Server.shutdown() for gentler shutdown of server.
   Called from Exit servlet
 + HttpRequest.getParameterNames() no longer alters the order returned by
   getQueryString().
 + Handle  path info of a dynamic loaded servlets and correctly set the servlet
   path.
 + Standardized date format in persistent cookies.

jetty-2.2.Beta1 - 07 June 1999
 + Defined abstract ServletLoader, derivations of which can be specified in
   HttpConfiguration properties.
 + Implemented all HttpServer attribute methods by mapping to the
   HttpConfiguration properties.  Dynamic reconfiguration is NOT supported by
   these methods (but we are thinking about it).
 + Close files after use to avoid "file leak" under heavy load.
 + Fixed missing copyright messages from some contributions
 + Fixed incorrect version numbers in a few places.
 + Improved ThreadPool synchronization and added minThreads.
 + Allow configuration of MinListenerThreads, MaxListenerThreads,
   MaxListenerThreadIdleMs
 + HtmlFilter optimized for being called by a buffered writer.
 + Don't warn about IOExceptions unless Debug is on.
 + Limit the job queue only grow to the max number of threads.
 + Included GNUJSP 0.9.9
 + Optional use of DateCache in log file format
 + Fixed cache in FileJarServletLoader
 + Destroy requests and responses to help garbage collector.
 + Restructure ThreadedServer to reduce object creation.

jetty-2.2.Beta0 - 31 May 1999
 + Servlet loader handles jar files with different files separator.
 + ThreadedServer gently shuts down.
 + Handle malformed % characters in URLs.
 + Included and improved version of ThreadPool for significant performance
   improvement under high load.
 + HttpRequest.getCookies returns empty array rather than null for no cookies.
 + Added HttpResponse.requestHandled() method to avoid bug with servlet doHead
   method.
 + Added Page.rewind() method to allow a page to be written multiple times
 + Added "Initialize" attribute to servlet configuration to allow servlet to be
   initialized when loaded.
 + LogHandler changed to support only a single outfile and optional append.
 + Included contributed com.mortbay.Jetty.StressTester class
 + Token effort to keep test files out of the jar
 + Removed support for STF

jetty-2.2.Alpha1 - 07 May 1999
 + ServletHolder can auto reload servlets
 + Dynamic servlets can have autoReload configured
 + Wait for requests to complete before reloading.
 + Call destroy on old servlets when reloading.
 + Made capitalization of config file more consistent(ish)
 + Fixed bug in SessionDump

jetty-2.2.Alpha0 - 06 May 1999
 + Improved PropertyTree implementation
 + Old Jetty.Server class renamed to Jetty.Server21
 + New Server class using PropertyTree for configuration
 + HttpHandlers given setProperties method to configure via Properties.
 + HttpListener class can be configured
 + Mime suffix mapping can be configured.
 + Removed historic API from sessions
 + Improved SessionDump servlet
 + Fixed date overflow in Cookies
 + HttpResponse.sendError avoids IllegalStateException
 + Added ServletLoader implementation if ClassLoader.
 + Dynamic loading of servlets.
 + Added reload method to ServletHolder, but no way to call it yet.
 + Changed options for FileServer
 + Implemented ServletServer
 + Removed SimpleServletServer

jetty-2.1.7 - 22 April 1999
 + Fixed showstopper bug with getReader and getWriter in requests and
   responses.
 + HttpFilter uses package interface to get HttpOutputStream

jetty-2.1.6 - 21 April 1999
 + Reduced initial size of most hashtables to reduce default memory overheads.
 + Throw IllegalStateException as required from gets of
   input/output/reader/writer in requests/responses.
 + New simpler version of PropertyTree
 + Updated PropertyTreeEditor
 + Return EOF from HttpInputStream that has a content length.
 + Added additional date formats for HttpHeader.getDateHeader

jetty-2.1.5 - 15 April 1999
 + Session URL encoding fixed for relative URLs.
 + Reduced session memory overhead of sessions
 + Form parameters protected against multiple decodes when redirected.
 + Added setType methods to com.mortbay.FTP.Ftp
 + Fixed bugs with invalid sessions
 + Page factory requires response for session encoding
 + Moved SessionHandler to front of stacks
 + HtmlFilter now expands <!=SESSION> to the URL encoded session if required.
 + Instrumented most of the demo to support URL session encoding.
 + Implemented HttpRequest.getReader()
 + Servlet log has been diverted to com.mortbay.Base.Log.event() Thus debug
   does not need to be turned on to see servlet logs.
 + Fixed alignment bug in TableForm
 + Removed RFCs from package
 + Fixed bug in ServletDispatch for null pathInfo

jetty-2.1.4 - 26 March 1999
 + Fixed problem compiling PathMap under some JDKs.
 + Reduced HTML dependence in HTTP package to allow minimal configuration
 + Tightened license agreement so that binary distributions are required to
   include the license file.
 + HttpRequest attributes implemented.
 + Session max idle time implemented.
 + pathInfo returns null for zero length pathInfo (as per spec). Sorry if this
   breaks your servlets - it is a pain!
 + fixed bug in getRealPath
 + getPathTranslated now call getRealPath with pathInfo (as per spec).

jetty-2.1.3 - 19 March 1999
 + Added support for suffixes to PathMap
 + Included GNUJSP implementation of Java Server Pages
 + Use Java2 javadoc

jetty-2.1.2 - 09 March 1999
 + JSDK 2.1.1
 + API documentation for JSDK 2.1.1
 + Cascading style sheet HTML element added.
 + Fixed trailing / bug in FileHandler (again!).
 + Converted most servlets to HttpServlets using do Methods.

jetty-2.1.1 - 05 March 1999
 + Reduced number of calls to getRemoteHost for optimization
 + Faster version of HttpInputStream.readLine().
 + com.mortbay.Base.DateCache class added and used to speed date handling.
 + Handle '.' in configured paths (temp fix until PropertyTrees)
 + Fast char buffer handling in HttpInputStream
 + Faster version of HttpHeader.read()
 + Faster version of HttpRequest
 + Size all StringBuffers

jetty-2.1.0 - 22 February 1999
 + Session URL Encoding
 + PropertyTrees (see new Demo page)
 + ServletDispatch (see new Demo page)
 + image/jpg -> image/jpeg
 + Deprecated com.mortbay.Util.STF
 + getServlet methods return null.

jetty-2.1.B1 - 13 February 1999
 + Fixed bug with if-modified-since in FileHandler
 + Added video/quicktime to default MIME types.
 + Fixed bug with MultipartRequest.
 + Updated DefaultExceptionHandler.
 + Updated InetAddrPort.
 + Updated URI.
 + Implemented Handler translations and getRealPath.
 + Improved handling of File.separator in FileHandler.
 + Implemented RequestDispatcher (NOT Tested!).
 + Implemented getResource and getResourceAsStream (NOT Tested!).
 + Replace package com.mortbay.Util.Gateway with class
   com.mortbay.Util.InetGateway

jetty-2.1.B0 - 30 January 1999
 + Uses JSDK2.1 API, but not all methods implemented.
 + Added support for PUT, MOVE, DELETE in FileHandler
 + FileHandler now sets content length.
 + Added plug gateway classes com.mortbay.Util.Gateway
 + Fixed command line bug with SimpleServletConfig
 + Minor changes to support MS J++ and its non standard language extensions -
   MMMmmm should have left it unchanged!

jetty-2.0.5 - 15 December 1998
 + Temp fix to getCharacterEncoding
 + added getHeaderNoParams

jetty-2.0.4 - 10 December 1998
 + Use real release of JSDK2.0 (rather than beta).
 + Portability issues solved for Apple's
 + Improved error code returns
 + Removed MORTBAY_HOME support from Makefiles
 + Improved default Makefile behaviour
 + Implement getCharacterEncoding

jetty-2.0.3 - 13 November 1998
 + Limit threads in ThreadedServer and low priority listener option greatly
   improve performance under worse case loads.
 + Fix bug with index files for Jetty.Server. Previously servers configured
   with com.mortbay.Jetty.Server would not handle index.html files.  Need to
   make this configurable in the prp file.
 + Fixed errors in README file: com.mortbay.Jetty.Server was called
   com.mortbay.HTTP.Server

jetty-2.0.2 - 01 November 1998
 + Use JETTY_HOME rather than MORTBAY_HOME for build environment
 + Add thread pool to threaded server for significant performance improvement.
 + Buffer files during configuration
 + Buffer HTTP Response headers.

jetty-2.0.1 - 27 October 1998
 + Released under an Open Source license.

jetty-2.0.0 - 25 October 1998
 + Removed exceptional case from FileHandler redirect.
 + Removed Chat demo (too many netscape dependencies).
 + Fixed Code.formatObject handling of null objects.
 + Added multipart/form-data demo.

jetty-2.0.Beta3 - 29 September 1998
 + Send 301 for directories without trailing / in FileHandler
 + Ignore exception from HttpListener
 + Properly implemented multiple listening addresses
 + Added com.mortbay.Jetty.Server (see README.Jetty)
 + Demo converted to an instance of com.mortbay.Jetty.Server
 + Fixed Log Handler again.
 + Added com.mortbay.HTTP.MultiPartRequest to handle file uploads

jetty-2.0Beta2 - 01 July 1998
 + Fixed Log Handler for HTTP/1.1
 + Slight improvement in READMEEs

jetty-2.0Beta1 - 01 June 1998
 + Improved performance of Code.debug() calls, significantly in the case of non
   matching debug patterns.
 + Fixed bug with calls to service during initialization of servlet
 + Provided addSection on com.mortbay.HTML.Page
 + Provided reset on com.mortbay.HTML.Composite.
 + Proxy demo in different server instance
 + Handle full URLs in HTTP requests (to some extent)
 + Improved performance with special asciiToLowerCase
 + Warn if MSIE used for multi part MIME.

jetty-2.0Alpha2 - 01 May 1998
 + JDK1.2 javax.servlet API
 + Added date format to Log
 + Added timezone to Log
 + Handle params in getIntHeader and getDateHeader
 + Removed HttpRequest.getByteContent
 + Use javax.servlet.http.HttpUtils.parsePostData
 + Use javax.servlet.http.Cookie
 + Use javax.servlet.http.HttpSession
 + Handle Single Threaded servlets with servlet pool

jetty-1.3.5 - 01 May 1998
 + Fixed socket inet bug in FTP
 + Debug triggers added to com.mortbay.Base.Code
 + Added date format to Log
 + Correct handling of multiple parameters

jetty-2.0Alpha1 - 08 April 1998
 + Fixed forward bug with no port number
 + Removed HttpRequestHeader class
 + Debug triggers added to com.mortbay.Base.Code
 + Handle HTTP/1.1 Host: header
 + Correct formatting of Date HTTP headers
 + HttpTests test harness
 + Add HTTP/1.1 Date: header
 + Handle file requests with If-Modified-Since: or If-Unmodified-Since:
 + Handle HEAD properly
 + Send Connection: close
 + Requires Host: header for 1.1 requests
 + Sends chunked data for 1.1 responses of unknown length.
 + handle extra spaces in HTTP headers
 + Really fixed handling of multiple parameters
 + accept chunked data
 + Send 100 Continue for HTTP/1.1 requests (concerned about push???)
 + persistent connections

jetty-1.3.4 - 15 March 1998
 + Fixed handling of multiple parameters in query and form content.
   "?A=1%2C2&A=C%2CD" now returns two values ("1,2" & "C,D") rather than 4.
 + ServletHandler now takes an optional file base directory name which is used
   to set the translated path for pathInfo in servlet requests.
 + Dump servlet enhanced to exercise these changes.

jetty-1.3.3
 + Fixed TableForm.addButtonArea bug.
 + TableForm.extendRow() uses existing cell
 + Closed exception window in HttpListener.java

jetty-1.3.2
 + Fixed proxy bug with no port number
 + Added per Table cell composite factories

jetty-1.3.1
 + Minor fixes in SmtpMail
 + ForwardHandler only forwards as http/1.0 (from Tobias.Miller)
 + Improved parsing of stack traces
 + Better handling of InvocationTargetException in debug
 + Minor release adjustments for Tracker

jetty-1.3.0
 + Added DbAdaptor to JDBC wrappers
 + Beta release of Tracker

jetty-1.2.0
 + Reintroduced STF
 + Fixed install bug for nested classes
 + Better Debug configuration
 + DebugServlet
 + Alternate look and feel for Jetty

jetty-1.1.1
 + Improved documentation

jetty-1.1
 + Improved connection caching in java.mortbay.JDBC
 + Moved HttpCode to com.mortbay.Util

jetty-1.0.1
 + Bug fixes

jetty-1.0
 + First release in com.mortbay package structure
 + Included Util, JDBC, HTML, HTTP, Jetty

