jetty-7.6.0.RC3 - 05 January 2012
 + 367433 added tests to investigate
 + 367435 improved D00 test harness
 + 367485 HttpExchange canceled before response do not release connection.
 + 367502 WebSocket connections should be closed when application context is
   stopped.
 + 367591 corrected configuration.xml version to 7.6
 + 367635 Added support for start.d directory
 + 637638 limit number of form parameters to avoid DOS
 + JETTY-1467 close half closed when idle

jetty-7.6.0.RC2 - 22 December 2011
 + 364638 HttpParser closes if data received while seeking EOF. Tests fixed to
   cope
 + 364921 Made test less time sensitive for ssl
 + 364936 use Resource for opening URL streams
 + 365267 NullPointerException in bad Address
 + 365375 ResourceHandler should be a HandlerWrapper
 + 365750 Support WebSocket over SSL, aka wss://
 + 365932 Produce jetty-websocket aggregate jar for android use
 + 365947 Set headers for Auth failure and retry in http-spi
 + 366316 Superfluous printStackTrace on 404
 + 366342 Dont persist DosFilter trackers in http session
 + 366730 pass the time idle to onIdleExpire
 + 367048 test harness for guard on suspended requests
 + 367175 SSL 100% CPU spin in case of blocked write and RST.
 + 367219 WebSocketClient.open() fails when URI uses default ports.
 + JETTY-1460 suppress PrintWriter exceptions
 + JETTY-1463 websocket D0 parser should return progress even if no fill done
 + JETTY-1465 NPE in ContextHandler.toString

jetty-7.6.0.RC1 - 04 December 2011
 + 352565 cookie httponly flag ignored
 + 353285 ServletSecurity annotation ignored
 + 357163 jetty 8 ought to proxy jetty8 javadocs
 + 357209 JSP tag listeners not called
 + 360051 SocketConnectionTest.testServerClosedConnection is excluded.
 + 361135 Allow session cookies to NEVER be marked as secure, even on HTTPS
   requests.
 + 362249 update shell scripts to jetty8
 + 363878 Add ecj compiler to jetty-8 for jsp
 + 364283 can't parse the servlet multipart-config for the web.xml
 + 364430 Support web.xml enabled state for servlets
 + 365370 ServletHandler can fall through to nested handler

jetty-7.6.0.RC0 - 29 November 2011
 + Refactored NIO layer for better half close handling
 + 349110 fixed bypass chunk handling
 + 360546 handle set count exceeding max integer
 + 362111 StdErrLog.isDebugEnabled() returns true too often
 + 362113 Improve Test Coverage of org.eclipse.jetty.util.log classes
 + 362407 setTrustStore(Resource) -> setTrustStoreResource(R)
 + 362447 add setMaxNonceAge() to DigestAuthenticator
 + 362468 NPE at line org.eclipse.jetty.io.BufferUtil.putHexInt
 + 362614 NPE in accepting connection
 + 362626 IllegalStateException thrown when SslContextFactory preconfigured
   with SSLContext
 + 362696 expand virtual host configuration options to ContextHandler and add
   associated test case for new behavior
 + 362742 improved UTF8 exception reason
 + 363124 improved websocket close handling
 + 363381 Throw IllegalStateException if Request uri is null on getServerName
 + 363408 GzipFilter should not attempt to compress HTTP status 204
 + 363488 ShutdownHandler use stopper thread
 + 363718 Setting java.rmi.server.hostname in jetty-jmx.xml
 + 363757 partial fix
 + 363785 StdErrLog must use system-dependent EOL.
 + 363943 ignore null attribute values
 + 363993 EOFException parsing HEAD response in HttpTester
 + 364638 SCEP does idle timestamp checking. New setCheckForIdle method
   controls onIdleExpired callback. 364921 a second onIdleExpired callback will
   result in close rather than a shutdown output.
 + 364657 Support HTTP only cookies from standard API
 + JETTY-1442 add _hostHeader setter for ProxyRule

jetty-7.5.4.v20111024 - 24 October 2011
 + 358263 JDBCSessionIdManager add setDatasource(DataSource) method
 + 358649 Replace existing StdErrLog system properties for DEBUG/IGNORED with
   LEVEL instead.
 + 360836 Accept parameters with bad UTF-8. Use replacement character
 + 360912 CrossOriginFilter does not send Access-Control-Allow-Origin on
   responses. 355103 Make allowCredentials default to true in
   CrossOriginFilter.
 + 360938 Connections closed after a while.
 + 361319 Log initialization does not catch correct exceptions on all jvms
 + 361325 359292 Allow KeyStore to be set
 + 361456 release timer task on connection failed
 + 361655 ExecutorThreadPool.isLowOnThreads() returns wrong value.
 + JETTY-1444 start threadpool before selector manager

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

jetty-7.5.2.v20111006 - 06 October 2011
 + 336443 check nonce count is increasing
 + 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
 + 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.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.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-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-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
 + 338880 Fixed failing buffer range checks
 + 338920 Handle non existent real path directories
 + 338961 AJP packet size
 + 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-1252 Handle more multipart transfer encodings
 + 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-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
 + 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

jetty-7.0.1.v20091125 - 25 November 2009
 + 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

