Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LICENSE-APACHE-2.0.txt202
-rw-r--r--LICENSE-CONTRIBUTOR/CDDLv1.0.txt119
-rw-r--r--LICENSE-CONTRIBUTOR/ccla-exist.pdfbin0 -> 431935 bytes
-rw-r--r--LICENSE-CONTRIBUTOR/ccla-simulalabs.txt157
-rw-r--r--LICENSE-CONTRIBUTOR/ccla-template.txt176
-rw-r--r--LICENSE-CONTRIBUTOR/cla-djencks.txt141
-rw-r--r--LICENSE-CONTRIBUTOR/cla-gregw.txt141
-rw-r--r--LICENSE-CONTRIBUTOR/cla-janb.txt139
-rw-r--r--LICENSE-CONTRIBUTOR/cla-jesse.txt141
-rw-r--r--LICENSE-CONTRIBUTOR/cla-jfarcand.txt142
-rw-r--r--LICENSE-CONTRIBUTOR/cla-jstrachan.txt143
-rw-r--r--LICENSE-CONTRIBUTOR/cla-jules.txt141
-rw-r--r--LICENSE-CONTRIBUTOR/cla-ngonzalez.txt141
-rw-r--r--LICENSE-CONTRIBUTOR/cla-sbordet.txt140
-rw-r--r--LICENSE-CONTRIBUTOR/cla-template.txt131
-rw-r--r--LICENSE-CONTRIBUTOR/cla-tvernum.txt141
-rw-r--r--LICENSE-ECLIPSE-1.0.html320
-rw-r--r--NOTICE.txt21
-rw-r--r--README.txt17
-rw-r--r--VERSION.txt3968
-rw-r--r--jetty-ajp/pom.xml76
-rw-r--r--jetty-ajp/src/main/config/etc/jetty-ajp.xml18
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Connection.java252
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Generator.java803
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Packet.java63
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13PacketMethods.java69
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Parser.java876
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Request.java113
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestHeaders.java62
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestPacket.java85
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13ResponseHeaders.java43
-rw-r--r--jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13SocketConnector.java115
-rw-r--r--jetty-ajp/src/test/java/org/eclipse/jetty/ajp/Ajp13ConnectionTest.java313
-rw-r--r--jetty-ajp/src/test/java/org/eclipse/jetty/ajp/TestAjpParser.java620
-rw-r--r--jetty-annotations/pom.xml85
-rw-r--r--jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationFinder.java729
-rw-r--r--jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationProcessor.java782
-rw-r--r--jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ClassNameResolver.java37
-rw-r--r--jetty-annotations/src/main/java/org/eclipse/jetty/annotations/Configuration.java145
-rw-r--r--jetty-annotations/src/main/java/org/eclipse/jetty/annotations/Util.java49
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ClassA.java95
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ClassB.java53
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ClassC.java75
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/Sample.java26
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServletAnnotationTest.java155
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationFinder.java105
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationInheritance.java249
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/resources/ResourceA.java115
-rw-r--r--jetty-annotations/src/test/java/org/eclipse/jetty/annotations/resources/ResourceB.java40
-rw-r--r--jetty-assembly-descriptor/pom.xml10
-rw-r--r--jetty-assembly-descriptor/src/main/resources/assemblies/config.xml17
-rw-r--r--jetty-assembly-descriptor/src/main/resources/assemblies/site-component.xml14
-rw-r--r--jetty-assembly/pom.xml503
-rw-r--r--jetty-assembly/src/main/assembly/jetty-src.xml21
-rw-r--r--jetty-assembly/src/main/assembly/jetty.xml19
-rw-r--r--jetty-assembly/src/main/assembly/site-component.xml18
-rwxr-xr-xjetty-assembly/src/main/resources/bin/build_release_bundles.sh27
-rwxr-xr-xjetty-assembly/src/main/resources/bin/jetty-xinetd.sh14
-rwxr-xr-xjetty-assembly/src/main/resources/bin/jetty.sh656
-rw-r--r--jetty-assembly/src/main/resources/contexts-available/README.TXT3
-rw-r--r--jetty-assembly/src/main/resources/contexts/README.TXT15
-rw-r--r--jetty-assembly/src/main/resources/contexts/javadoc.xml28
-rw-r--r--jetty-assembly/src/main/resources/javadoc/contents.html7
-rw-r--r--jetty-assembly/src/main/resources/resources/log4j.properties9
-rw-r--r--jetty-client/pom.xml85
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/Address.java86
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/CachedExchange.java68
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/ContentExchange.java126
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java699
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java574
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpDestination.java546
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpEventListener.java63
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpEventListenerWrapper.java139
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/HttpExchange.java645
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/SelectConnector.java198
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/SocketConnector.java87
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/Authorization.java28
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/BasicAuthorization.java52
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/DigestAuthorization.java138
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/HashRealmResolver.java40
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/ProxyAuthorization.java52
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/Realm.java27
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/RealmResolver.java22
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/SecurityListener.java260
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/security/SimpleRealmResolver.java39
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/webdav/MkcolExchange.java55
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/webdav/PropfindExchange.java48
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/webdav/WebdavListener.java312
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/webdav/WebdavSupportedExchange.java65
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/AsyncSslHttpExchangeTest.java34
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/AsyncSslSecurityListenerTest.java25
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/ExpireTest.java161
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/ExternalKeyStoreAsyncSslHttpExchangeTest.java38
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/HttpExchangeTest.java391
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/SecurityListenerTest.java330
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/SslHttpExchangeTest.java59
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/SslSecurityListenerTest.java232
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/WebdavListenerTest.java147
-rw-r--r--jetty-client/src/test/java/org/eclipse/jetty/client/security/SecurityResolverTest.java45
-rw-r--r--jetty-client/src/test/resources/foo.txt1
-rw-r--r--jetty-client/src/test/resources/keystorebin0 -> 1426 bytes
-rw-r--r--jetty-client/src/test/resources/realm.properties22
-rw-r--r--jetty-deploy/pom.xml78
-rw-r--r--jetty-deploy/src/main/java/org/eclipse/jetty/deploy/ConfigurationManager.java28
-rw-r--r--jetty-deploy/src/main/java/org/eclipse/jetty/deploy/ContextDeployer.java371
-rw-r--r--jetty-deploy/src/main/java/org/eclipse/jetty/deploy/FileConfigurationManager.java69
-rw-r--r--jetty-deploy/src/main/java/org/eclipse/jetty/deploy/WebAppDeployer.java253
-rw-r--r--jetty-eclipse-codetemplates.xml50
-rw-r--r--jetty-eclipse-java-format.xml267
-rw-r--r--jetty-http/pom.xml70
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/AbstractGenerator.java491
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/EncodedHttpURI.java163
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/Generator.java95
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpContent.java36
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpCookie.java186
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java1463
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java947
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeaderValues.java100
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeaders.java226
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethods.java59
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java1137
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpSchemes.java33
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpStatus.java1033
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java37
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java592
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/HttpVersions.java42
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/MimeTypes.java368
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/Parser.java36
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/PathMap.java544
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/security/B64Code.java280
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/security/Constraint.java214
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/security/Credential.java207
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/security/Password.java229
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/security/UnixCrypt.java460
-rw-r--r--jetty-http/src/main/java/org/eclipse/jetty/http/ssl/SslSelectChannelEndPoint.java789
-rw-r--r--jetty-http/src/main/resources/org/eclipse/jetty/http/encoding.properties3
-rw-r--r--jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties181
-rw-r--r--jetty-http/src/main/resources/org/eclipse/jetty/http/useragents57
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorClientTest.java355
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorTest.java270
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpHeaderTest.java487
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java560
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/HttpStatusCodeTest.java26
-rw-r--r--jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java187
-rw-r--r--jetty-io/pom.xml64
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/AbstractBuffer.java707
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/AbstractBuffers.java193
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/AsyncEndPoint.java32
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java371
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/BufferCache.java154
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/BufferDateCache.java56
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/BufferUtil.java311
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/Buffers.java30
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/ByteArrayBuffer.java428
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/ByteArrayEndPoint.java338
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/Connection.java23
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/EndPoint.java152
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/EofException.java34
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/HttpException.java88
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/SimpleBuffers.java74
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/View.java235
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/WriterOutputStream.java91
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/bio/SocketEndPoint.java171
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/bio/StreamEndPoint.java288
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/bio/StringEndPoint.java87
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/ChannelEndPoint.java435
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/DirectNIOBuffer.java331
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/IndirectNIOBuffer.java56
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/NIOBuffer.java32
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/RandomAccessFileBuffer.java186
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectChannelEndPoint.java516
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/nio/SelectorManager.java658
-rw-r--r--jetty-io/src/test/java/org/eclipse/jetty/io/AbstractBuffersTest.java181
-rw-r--r--jetty-io/src/test/java/org/eclipse/jetty/io/BufferCacheTest.java162
-rw-r--r--jetty-io/src/test/java/org/eclipse/jetty/io/BufferTest.java279
-rw-r--r--jetty-io/src/test/java/org/eclipse/jetty/io/BufferUtilTest.java108
-rw-r--r--jetty-io/src/test/java/org/eclipse/jetty/io/IOTest.java98
-rw-r--r--jetty-jaspi/pom.xml78
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiAuthenticator.java149
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiAuthenticatorFactory.java157
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiMessageInfo.java215
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/ServletCallbackHandler.java134
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/SimpleAuthConfig.java71
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/callback/CredentialValidationCallback.java74
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/BaseAuthModule.java146
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/BasicAuthModule.java96
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/ClientCertAuthModule.java89
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/DigestAuthModule.java357
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/FormAuthModule.java436
-rw-r--r--jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/UserInfo.java48
-rw-r--r--jetty-jmx/pom.xml77
-rw-r--r--jetty-jmx/src/main/config/etc/jetty-jmx.xml60
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java274
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java719
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ServerMBean.java44
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/handler/ContextHandlerMBean.java78
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/servlet/HolderMBean.java38
-rw-r--r--jetty-jmx/src/main/java/org/eclipse/jetty/jmx/webapp/WebAppContextMBean.java43
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/cometd/management/AbstractBayeux-mbean.properties9
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/deployer/management/ContextDeployer-mbean.properties11
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/deployer/management/WebAppDeployer-mbean.properties14
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/ContextHandler-mbean.properties28
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/ContextHandlerCollection-mbean.properties2
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/HandlerCollection-mbean.properties2
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/HandlerContainer-mbean.properties2
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/HandlerWrapper-mbean.properties2
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/handler/management/StatisticsHandler-mbean.properties17
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/management/AbstractConnector-mbean.properties18
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/management/Connector-mbean.properties29
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/management/Handler-mbean.properties3
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/management/NCSARequestLog-mbean.properties6
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/management/Server-mbean.properties7
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/nio/management/SelectChannelConnector-mbean.properties3
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/AbstractSessionManager-mbean.properties15
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/Context-mbean.properties4
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/FilterMapping-mbean.properties4
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/Holder-mbean.properties6
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/ServletHandler-mbean.properties5
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/ServletHolder-mbean.properties4
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/servlet/management/ServletMapping-mbean.properties3
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/component/management/LifeCycle-mbean.properties9
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/log/management/Logger-mbean.properties2
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/log/management/Slf4jLog-mbean.properties1
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/log/management/StdErrLog-mbean.properties1
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/thread/management/BoundedThreadPool-mbean.properties7
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/thread/management/QueuedThreadPool-mbean.properties9
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/util/thread/management/ThreadPool-mbean.properties4
-rw-r--r--jetty-jmx/src/main/resources/org/eclipse/jetty/webapp/management/WebAppContext-mbean.properties14
-rw-r--r--jetty-jmx/src/test/java/com/acme/Base.java87
-rw-r--r--jetty-jmx/src/test/java/com/acme/Derived.java45
-rw-r--r--jetty-jmx/src/test/java/com/acme/Signature.java21
-rw-r--r--jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java59
-rw-r--r--jetty-jmx/src/test/resources/com/acme/management/Derived-mbean.properties5
-rw-r--r--jetty-jndi/pom.xml87
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/ContextFactory.java192
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/InitialContextFactory.java79
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingContext.java1446
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingUtil.java139
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/factories/MailSessionReference.java183
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaNameParser.java52
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaRootURLContext.java329
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaURLContextFactory.java103
-rw-r--r--jetty-jndi/src/main/java/org/eclipse/jetty/jndi/local/localContextRoot.java435
-rw-r--r--jetty-jndi/src/main/resources/jndi.properties2
-rw-r--r--jetty-jndi/src/test/java/org/eclipse/jetty/jndi/factories/TestMailSessionReference.java72
-rw-r--r--jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestJNDI.java295
-rw-r--r--jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestLocalJNDI.java88
-rw-r--r--jetty-plus/pom.xml103
-rw-r--r--jetty-plus/src/main/config/etc/jetty-plus.xml74
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/Injection.java236
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/InjectionCollection.java152
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/LifeCycleCallback.java170
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/LifeCycleCallbackCollection.java159
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PojoContextListener.java76
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PojoFilter.java82
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PojoServlet.java174
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PojoWrapper.java20
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PostConstructCallback.java60
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PreDestroyCallback.java70
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/RunAs.java75
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/RunAsCollection.java79
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/JAASGroup.java147
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/JAASLoginService.java280
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/JAASPrincipal.java79
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/JAASRole.java32
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/JAASUserPrincipal.java74
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/RoleCheckPolicy.java31
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/StrictRoleCheckPolicy.java58
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/callback/AbstractCallbackHandler.java55
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/callback/DefaultCallbackHandler.java92
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/callback/ObjectCallback.java62
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/callback/RequestParameterCallback.java56
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/AbstractDatabaseLoginModule.java136
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/AbstractLoginModule.java278
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/DataSourceLoginModule.java85
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/JDBCLoginModule.java127
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/LdapLoginModule.java680
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/PropertyFileLoginModule.java156
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jaas/spi/UserInfo.java66
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/EnvEntry.java56
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Link.java43
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/NamingEntry.java206
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/NamingEntryUtil.java246
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Resource.java45
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Transaction.java113
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/security/DataSourceLoginService.java499
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/servlet/ServletHandler.java123
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/AbstractConfiguration.java471
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/Configuration.java259
-rw-r--r--jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java205
-rw-r--r--jetty-plus/src/test/java/org/eclipse/jetty/plus/jndi/TestNamingEntries.java287
-rw-r--r--jetty-plus/src/test/java/org/eclipse/jetty/plus/jndi/TestNamingEntryUtil.java126
-rw-r--r--jetty-plus/src/test/java/org/eclipse/jetty/plus/webapp/TestConfiguration.java119
-rw-r--r--jetty-rewrite/pom.xml87
-rw-r--r--jetty-rewrite/src/main/config/etc/jetty-rewrite.xml77
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/CookiePatternRule.java81
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRule.java53
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRule.java126
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderRule.java102
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/LegacyRule.java94
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/MsieSslRule.java91
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/PatternRule.java78
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRule.java64
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RegexRule.java83
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRule.java86
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java339
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java67
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRule.java72
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/Rule.java88
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java281
-rw-r--r--jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainer.java111
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/AbstractRuleTestCase.java76
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java81
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRuleTest.java89
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRuleTest.java105
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/LegacyRuleTest.java62
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/MsieSslRuleTest.java222
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/PatternRuleTest.java148
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRuleTest.java46
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RegexRuleTest.java110
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRuleTest.java78
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteHandlerTest.java141
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewritePatternRuleTest.java51
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRuleTest.java47
-rw-r--r--jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainerTest.java184
-rw-r--r--jetty-rewrite/src/test/resources/org.mortbay.jetty.rewrite.handler/jetty-rewrite.xml283
-rw-r--r--jetty-security/pom.xml73
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/Authentication.java66
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/Authenticator.java53
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintAware.java28
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintMapping.java79
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintSecurityHandler.java316
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/CrossContextPsuedoSession.java31
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/DefaultAuthentication.java59
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/DefaultAuthenticatorFactory.java88
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/DefaultIdentityService.java119
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/DefaultUserIdentity.java71
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/HashCrossContextPsuedoSession.java90
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java247
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/IdentityService.java99
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/JDBCLoginService.java263
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/LazyAuthentication.java85
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/LoginService.java28
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/MappedLoginService.java292
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/RoleInfo.java135
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/RoleRunAsToken.java39
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/RunAsToken.java22
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java524
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/ServerAuthException.java42
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/UserDataConstraint.java35
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/BasicAuthenticator.java106
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ClientCertAuthenticator.java98
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DelegateAuthenticator.java57
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DigestAuthenticator.java333
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/FormAuthenticator.java219
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LazyAuthenticator.java45
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginAuthenticator.java44
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginCallback.java50
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginCallbackImpl.java104
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SessionCachingAuthenticator.java59
-rw-r--r--jetty-security/src/main/java/org/eclipse/jetty/security/authentication/XCPSCachingAuthenticator.java55
-rw-r--r--jetty-security/src/test/java/org/eclipse/jetty/security/ConstraintTest.java607
-rw-r--r--jetty-server/pom.xml106
-rw-r--r--jetty-server/src/main/assembly/site-component.xml15
-rw-r--r--jetty-server/src/main/config/etc/jdbcRealm.properties72
-rw-r--r--jetty-server/src/main/config/etc/jetty-bio-ssl.xml25
-rw-r--r--jetty-server/src/main/config/etc/jetty-bio.xml23
-rw-r--r--jetty-server/src/main/config/etc/jetty-proxy.xml64
-rw-r--r--jetty-server/src/main/config/etc/jetty-ssl.xml29
-rw-r--r--jetty-server/src/main/config/etc/jetty-stats.xml22
-rw-r--r--jetty-server/src/main/config/etc/jetty-xinetd.xml56
-rw-r--r--jetty-server/src/main/config/etc/jetty.xml189
-rw-r--r--jetty-server/src/main/config/etc/keystorebin0 -> 1416 bytes
-rw-r--r--jetty-server/src/main/config/etc/realm.properties21
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java990
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/AsyncRequest.java708
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java322
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java296
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java571
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java48
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HandlerContainer.java33
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java1114
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java62
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpOnlyCookie.java45
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java173
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpWriter.java266
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/InclusiveByteRange.java211
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java221
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java513
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Request.java1866
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/RequestLog.java26
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/ResourceCache.java555
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Response.java1191
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/RetryRequest.java29
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Server.java779
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Servlet3Continuation.java115
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/SessionIdManager.java83
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/SessionManager.java327
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/UserIdentity.java136
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/bio/SocketConnector.java264
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java97
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandlerContainer.java88
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/CompleteHandler.java37
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java1903
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java319
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java193
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java175
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java220
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java54
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java179
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java158
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/RequestLogHandler.java132
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java335
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java369
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/AbstractNIOConnector.java77
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/BlockingChannelConnector.java189
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/InheritedChannelConnector.java66
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/NIOConnector.java26
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java328
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java161
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionManager.java1182
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java256
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java652
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java695
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionManager.java1080
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java291
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/ssl/ServletSSL.java83
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/ssl/SslSelectChannelConnector.java703
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/ssl/SslSocketConnector.java665
-rw-r--r--jetty-server/src/main/resources/org/eclipse/jetty/favicon.icobin0 -> 1150 bytes
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/AsyncContextTest.java294
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/BlockingChannelServerTest.java26
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/BusySelectChannelServerTest.java139
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/CheckReverseProxyHeadersTest.java177
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java217
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/EncodedHttpURITest.java45
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java354
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java918
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/HttpURITest.java188
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/RFC2616Test.java888
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java428
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java155
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java508
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/SelectChannelServerTest.java26
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/ServerTest.java51
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/SocketServerTest.java26
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/UnreadInputTest.java119
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java176
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java259
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java383
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java266
-rw-r--r--jetty-server/src/test/resources/fakeRequests.txt27
-rw-r--r--jetty-server/src/test/resources/keystorebin0 -> 1426 bytes
-rw-r--r--jetty-servlet-tester/pom.xml23
-rw-r--r--jetty-servlet-tester/src/main/java/org/eclipse/jetty/testing/HttpTester.java504
-rw-r--r--jetty-servlet-tester/src/main/java/org/eclipse/jetty/testing/ServletTester.java358
-rw-r--r--jetty-servlet-tester/src/test/java/org/eclipse/jetty/testing/HttpTesterTest.java42
-rw-r--r--jetty-servlet-tester/src/test/java/org/eclipse/jetty/testing/ServletTest.java288
-rw-r--r--jetty-servlet/pom.xml61
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java905
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ErrorPageErrorHandler.java267
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java194
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java280
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java379
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java303
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/NIOResourceCache.java86
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/NoJspServlet.java35
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java502
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java1370
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java685
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletMapping.java80
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/StatisticsServlet.java240
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AbstractSessionTest.java176
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java295
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/InvokerTest.java82
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/SessionTestClient.java125
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/SessionTestServer.java348
-rw-r--r--jetty-servlets/pom.xml83
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/AsyncProxyServlet.java352
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java417
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java120
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java578
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java75
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java456
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ProxyServlet.java316
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/PutFilter.java327
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/QoSFilter.java227
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java147
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java65
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java45
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java250
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java235
-rw-r--r--jetty-start/pom.xml28
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Classpath.java201
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Main.java698
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Monitor.java128
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/README.txt38
-rw-r--r--jetty-start/src/main/java/org/eclipse/jetty/start/Version.java109
-rw-r--r--jetty-start/src/main/resources/org/eclipse/jetty/start/start.config141
-rw-r--r--jetty-test-webapp/jetty-chat.jmx318
-rw-r--r--jetty-test-webapp/pom.xml138
-rw-r--r--jetty-test-webapp/src/main/config/contexts/demo.xml11
-rw-r--r--jetty-test-webapp/src/main/config/contexts/test.d/override-web.xml42
-rw-r--r--jetty-test-webapp/src/main/config/contexts/test.xml78
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/ChatServlet.java276
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/CometServlet.java85
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/CookieDump.java114
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/Counter.java37
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/Date2Tag.java48
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/DateTag.java65
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/DispatchServlet.java260
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/Dump.java899
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/HelloWorld.java67
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/SessionDump.java176
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/TagListener.java135
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/TestFilter.java91
-rw-r--r--jetty-test-webapp/src/main/java/com/acme/TestListener.java152
-rw-r--r--jetty-test-webapp/src/main/webapp/META-INF/MANIFEST.MF3
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/acme-taglib.tld28
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/acme-taglib2.tld35
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/jetty-web.xml14
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/tags/CVS/Entries2
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/tags/CVS/Repository1
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/tags/CVS/Root1
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/tags/panel.tag17
-rw-r--r--jetty-test-webapp/src/main/webapp/WEB-INF/web.xml303
-rw-r--r--jetty-test-webapp/src/main/webapp/auth/file.txt10
-rw-r--r--jetty-test-webapp/src/main/webapp/auth/relax.txt10
-rwxr-xr-xjetty-test-webapp/src/main/webapp/cgi-bin/hello.sh4
-rw-r--r--jetty-test-webapp/src/main/webapp/d.txt10
-rw-r--r--jetty-test-webapp/src/main/webapp/da.txt1000
-rw-r--r--jetty-test-webapp/src/main/webapp/da.txt.gzbin0 -> 2565 bytes
-rw-r--r--jetty-test-webapp/src/main/webapp/dat.txt4000
-rw-r--r--jetty-test-webapp/src/main/webapp/data.txt10000
-rw-r--r--jetty-test-webapp/src/main/webapp/data.txt.gzbin0 -> 25691 bytes
-rw-r--r--jetty-test-webapp/src/main/webapp/favicon.icobin0 -> 1150 bytes
-rw-r--r--jetty-test-webapp/src/main/webapp/index.html53
-rw-r--r--jetty-test-webapp/src/main/webapp/jetty_banner.gifbin0 -> 65384 bytes
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/bean1.jsp15
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/bean2.jsp15
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/dump.jsp23
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/expr.jsp23
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/index.html15
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/tag.jsp16
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/tag2.jsp19
-rw-r--r--jetty-test-webapp/src/main/webapp/jsp/tagfile.jsp37
-rw-r--r--jetty-test-webapp/src/main/webapp/logon.html20
-rw-r--r--jetty-test-webapp/src/main/webapp/logonError.html5
-rw-r--r--jetty-test-webapp/src/main/webapp/rewrite.html14
-rw-r--r--jetty-test-webapp/src/main/webapp/snoop.jsp201
-rw-r--r--jetty-util/pom.xml84
-rw-r--r--jetty-util/src/main/assembly/config.xml20
-rw-r--r--jetty-util/src/main/config/etc/jetty-logging.xml32
-rw-r--r--jetty-util/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ArrayQueue.java352
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/Attributes.java31
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/AttributesMap.java119
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/BlockingArrayQueue.java585
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayISO8859Writer.java261
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayOutputStream2.java44
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/DateCache.java306
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/IO.java461
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/IntrospectionUtil.java299
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/LazyList.java477
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/Loader.java148
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/MultiException.java175
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/MultiMap.java378
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java135
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartWriter.java132
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/QuotedStringTokenizer.java786
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java328
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java498
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/SingletonList.java99
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/StringMap.java682
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java383
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java564
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java595
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/UrlEncoded.java865
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuffer.java161
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuilder.java160
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/Continuation.java117
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/ContinuationSupport.java35
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSON.java1379
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSONDateConvertor.java100
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSONEnumConvertor.java87
-rwxr-xr-xjetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSONObjectConvertor.java110
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/JSONPojoConvertor.java392
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/ajax/WaitingContinuation.java153
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java195
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/component/Container.java298
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/component/LifeCycle.java114
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java307
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/log/Logger.java37
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/log/LoggerLog.java154
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/log/Slf4jLog.java113
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java156
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/BadResource.java114
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java363
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java329
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarResource.java242
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java499
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceCollection.java442
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceFactory.java25
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java292
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutorThreadPool.java159
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/thread/OldQueuedThreadPool.java608
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java463
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadPool.java51
-rw-r--r--jetty-util/src/main/java/org/eclipse/jetty/util/thread/Timeout.java387
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/ArrayQueueTest.java163
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/BlockingArrayQueueTest.java311
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java94
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/LazyListTest.java355
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java170
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/StringMapTest.java296
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java191
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/TestIntrospectionUtil.java209
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/URITest.java246
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/URLEncodedTest.java187
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/Utf8StringBufferTest.java32
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/Utf8StringBuilderTest.java32
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorTest.java382
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java451
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/component/LifeCycleListenerTest.java230
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java33
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceCollectionTest.java76
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java347
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/resource/TestData/alphabet.txt1
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/resource/TestData/alt.zipbin0 -> 840 bytes
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/resource/TestData/test.zipbin0 -> 1406 bytes
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java156
-rw-r--r--jetty-util/src/test/java/org/eclipse/jetty/util/thread/TimeoutTest.java255
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/one/1.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/one/dir/1.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/three/2.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/three/3.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/three/dir/3.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/two/1.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/two/2.txt1
-rw-r--r--jetty-util/src/test/resources/org/eclipse/jetty/util/resource/two/dir/2.txt1
-rw-r--r--jetty-util/src/test/resources/resource.txt1
-rw-r--r--jetty-webapp/pom.xml94
-rw-r--r--jetty-webapp/src/main/config/etc/webdefault.xml414
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java77
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/JarScanner.java167
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/JettyWebXmlConfiguration.java121
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/TagLibConfiguration.java324
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java369
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java1309
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java94
-rw-r--r--jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebXmlConfiguration.java1040
-rw-r--r--jetty-xml/pom.xml90
-rw-r--r--jetty-xml/src/main/assembly/site-component.xml15
-rw-r--r--jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java993
-rw-r--r--jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlParser.java796
-rw-r--r--jetty-xml/src/main/resources/org/eclipse/jetty/xml/configure_6_0.dtd265
-rw-r--r--jetty-xml/src/test/java/org/eclipse/jetty/xml/TestConfiguration.java79
-rw-r--r--jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java135
-rw-r--r--jetty-xml/src/test/resources/org/eclipse/jetty/xml/configure.xml131
-rw-r--r--pom.xml230
660 files changed, 149998 insertions, 0 deletions
diff --git a/LICENSE-APACHE-2.0.txt b/LICENSE-APACHE-2.0.txt
new file mode 100644
index 0000000000..d645695673
--- /dev/null
+++ b/LICENSE-APACHE-2.0.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/LICENSE-CONTRIBUTOR/CDDLv1.0.txt b/LICENSE-CONTRIBUTOR/CDDLv1.0.txt
new file mode 100644
index 0000000000..1154e0aeec
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/CDDLv1.0.txt
@@ -0,0 +1,119 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)áthe power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)áownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sectionsá2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Sectioná2.1(b) above, no patent license is granted: (1)áfor code that You delete from the Original Software, or (2)áfor infringements caused by: (i)áthe modification of the Original Software, or (ii)áthe combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)áModifications made by that Contributor (or portions thereof); and (2)áthe combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sectionsá2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Sectioná2.2(b) above, no patent license is granted: (1)áfor any code that Contributor has deleted from the Contributor Version; (2)áfor infringements caused by: (i)áthird party modifications of Contributor Version, or (ii)áthe combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)áunder Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)árename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)áotherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sectionsá2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sectionsá6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48áC.F.R.á2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. á252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48áC.F.R.á12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
+
+
+
diff --git a/LICENSE-CONTRIBUTOR/ccla-exist.pdf b/LICENSE-CONTRIBUTOR/ccla-exist.pdf
new file mode 100644
index 0000000000..f9a6889d1e
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/ccla-exist.pdf
Binary files differ
diff --git a/LICENSE-CONTRIBUTOR/ccla-simulalabs.txt b/LICENSE-CONTRIBUTOR/ccla-simulalabs.txt
new file mode 100644
index 0000000000..0d85d0c7e2
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/ccla-simulalabs.txt
@@ -0,0 +1,157 @@
+Jetty Project
+Corporate Contributor License Agreement V1.1
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay Consulting
+Pty. Ltd. Australia ("MortBay"). In order to clarify the intellectual
+property license granted with Contributions from any person or entity,
+MortBay must have a Contributor License Agreement ("CLA") that has been
+signed by each Contributor, indicating agreement to the license terms
+below. This license is for your protection as a Contributor as well as
+the protection of MortBay and its users; it does not change your rights
+to use your own Contributions for any other purpose.
+
+This version of the Agreement allows an entity (the "Corporation") to
+submit Contributions to Mort Bay, to authorize Contributions submitted by
+its designated employees to Mort Bay, and to grant copyright and patent
+licenses thereto.
+
+If you have not already done so, please complete this agreement and
+commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty at
+LICENSES/ccla-CORPORATE-NAME.txt. If you do not have commit privilege to the
+repository, please email the file to eclipse@eclipse.com. If possible,
+digitally sign the committed file, otherwise send a signed Agreement
+to MortBay.
+
+Each developer covered by this agreement should have their name appended
+the Schedule A and the copy commited to LICENSES/ccla-CORPORATE-NAME.txt
+using their authenticated codehaus ssh login. If possible, digitally sign
+the committed file, otherwise send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Corporation name: Simula Labs, Inc.
+ Mailing Address: 4676 Admiralty Way, Suite 520
+ Marina Del Rey, CA 90292
+
+ Point of Contact:
+ Full name: Gordon King
+ E-Mail: gordon.king@simulalabs.com
+ Fax: +1 800 822 0471
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement with
+ MortBay. For legal entities, the entity making a Contribution and all
+ other entities that control, are controlled by, or are under common
+ control with that entity are considered to be a single Contributor. For
+ the purposes of this definition, "control" means (i) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (ii) ownership of fifty percent
+ (50%) or more of the outstanding shares, or (iii) beneficial ownership
+ of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion in, or
+ documentation of, any of the products owned or managed by MortBay (the
+ "Work"). For the purposes of this definition, "submitted" means any
+ form of electronic, verbal, or written communication sent to MortBay
+ or its representatives, including but not limited to communication
+ on electronic mailing lists, source code control systems, and issue
+ tracking systems that are managed by, or on behalf of, MortBay for
+ the purpose of discussing and improving the Work, but excluding
+ communication that is conspicuously marked or otherwise designated
+ in writing by You as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions
+ of this Agreement, You hereby grant to MortBay and to recipients of
+ software distributed by MortBay a perpetual, worldwide, non-exclusive,
+ no-charge, royalty-free, irrevocable copyright license to reproduce,
+ prepare derivative works of, publicly display, publicly perform,
+ sublicense, and distribute Your Contributions and such derivative
+ works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to recipients of
+ software distributed by MortBay a perpetual, worldwide, non-exclusive,
+ no-charge, royalty-free, irrevocable (except as stated in this section)
+ patent license to make, have made, use, offer to sell, sell, import,
+ and otherwise transfer the Work, where such license applies only to
+ those patent claims licensable by You that are necessarily infringed by
+ Your Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) were submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for that
+ Contribution or Work shall terminate as of the date such litigation
+ is filed.
+
+4. You represent that You are legally entitled to grant the above
+ license. You represent further that each employee of the Corporation
+ designated on Schedule A below (or in a subsequent written modification
+ to that Schedule) is authorized to submit Contributions on behalf of
+ the Corporation.
+
+5. You represent that each of Your Contributions is Your original creation
+ (see section 7 for submissions on behalf of others). You represent
+ that Your Contribution submissions include complete details of any
+ third-party license or other restriction (including, but not limited
+ to, related patents and trademarks) of which you are personally aware
+ and which are associated with any part of Your Contributions.
+
+6. You are not expected to provide support for Your Contributions, except
+ to the extent You desire to provide support. You may provide support
+ for free, for a fee, or not at all. Unless required by applicable
+ law or agreed to in writing, You provide Your Contributions on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ express or implied, including, without limitation, any warranties or
+ conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
+ FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any Contribution,
+ identifying the complete details of its source and of any license or
+ other restriction (including, but not limited to, related patents,
+ trademarks, and license agreements) of which you are personally
+ aware, and conspicuously marking the work as "Submitted on behalf of
+ a third-party: [named here]".
+
+8. It is your responsibility to notify MortBay when any change is required
+ to the list of designated employees authorized to submit Contributions
+ on behalf of the Corporation, or to the Corporation's Point of Contact
+ with MortBay.
+
+Date:
+
+Signature:
+
+Name: Gordon King
+
+Positions: Chief Operational Officer
+
+
+
+Schedule A
+
+ Name Date added
+
+ Simone Bordet 12 September 2006
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
diff --git a/LICENSE-CONTRIBUTOR/ccla-template.txt b/LICENSE-CONTRIBUTOR/ccla-template.txt
new file mode 100644
index 0000000000..0ba4d66aee
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/ccla-template.txt
@@ -0,0 +1,176 @@
+Jetty Project
+Corporate Contributor License Agreement V1.1
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay Consulting
+Pty. Ltd. Australia ("MortBay"). In order to clarify the intellectual
+property license granted with Contributions from any person or entity,
+MortBay must have a Contributor License Agreement ("CLA") that has been
+signed by each Contributor, indicating agreement to the license terms
+below. This license is for your protection as a Contributor as well as
+the protection of MortBay and its users; it does not change your rights
+to use your own Contributions for any other purpose.
+
+This version of the Agreement allows an entity (the "Corporation") to
+submit Contributions to Mort Bay, to authorize Contributions submitted by
+its designated employees to Mort Bay, and to grant copyright and patent
+licenses thereto.
+
+If you have not already done so, please complete this agreement and
+commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty at
+LICENSES/ccla-CORPORATE-NAME.txt. If you do not have commit privilege to the
+repository, please email the file to eclipse@eclipse.com. If possible,
+digitally sign the committed file, otherwise send a signed Agreement
+to MortBay.
+
+Each developer covered by this agreement should have their name appended
+the Schedule A and the copy commited to LICENSES/ccla-CORPORATE-NAME.txt
+using their authenticated codehaus ssh login. If possible, digitally sign
+the committed file, otherwise send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Corporation name:
+ Mailing Address:
+
+ Point of Contact:
+ Full name:
+ E-Mail:
+ Fax:
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement with
+ MortBay. For legal entities, the entity making a Contribution and all
+ other entities that control, are controlled by, or are under common
+ control with that entity are considered to be a single Contributor. For
+ the purposes of this definition, "control" means (i) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (ii) ownership of fifty percent
+ (50%) or more of the outstanding shares, or (iii) beneficial ownership
+ of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion in, or
+ documentation of, any of the products owned or managed by MortBay (the
+ "Work"). For the purposes of this definition, "submitted" means any
+ form of electronic, verbal, or written communication sent to MortBay
+ or its representatives, including but not limited to communication
+ on electronic mailing lists, source code control systems, and issue
+ tracking systems that are managed by, or on behalf of, MortBay for
+ the purpose of discussing and improving the Work, but excluding
+ communication that is conspicuously marked or otherwise designated
+ in writing by You as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions
+ of this Agreement, You hereby grant to MortBay and to recipients of
+ software distributed by MortBay a perpetual, worldwide, non-exclusive,
+ no-charge, royalty-free, irrevocable copyright license to reproduce,
+ prepare derivative works of, publicly display, publicly perform,
+ sublicense, and distribute Your Contributions and such derivative
+ works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to recipients of
+ software distributed by MortBay a perpetual, worldwide, non-exclusive,
+ no-charge, royalty-free, irrevocable (except as stated in this section)
+ patent license to make, have made, use, offer to sell, sell, import,
+ and otherwise transfer the Work, where such license applies only to
+ those patent claims licensable by You that are necessarily infringed by
+ Your Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) were submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for that
+ Contribution or Work shall terminate as of the date such litigation
+ is filed.
+
+4. You represent that You are legally entitled to grant the above
+ license. You represent further that each employee of the Corporation
+ designated on Schedule A below (or in a subsequent written modification
+ to that Schedule) is authorized to submit Contributions on behalf of
+ the Corporation.
+
+5. You represent that each of Your Contributions is Your original creation
+ (see section 7 for submissions on behalf of others). You represent
+ that Your Contribution submissions include complete details of any
+ third-party license or other restriction (including, but not limited
+ to, related patents and trademarks) of which you are personally aware
+ and which are associated with any part of Your Contributions.
+
+6. You are not expected to provide support for Your Contributions, except
+ to the extent You desire to provide support. You may provide support
+ for free, for a fee, or not at all. Unless required by applicable
+ law or agreed to in writing, You provide Your Contributions on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ express or implied, including, without limitation, any warranties or
+ conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS
+ FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any Contribution,
+ identifying the complete details of its source and of any license or
+ other restriction (including, but not limited to, related patents,
+ trademarks, and license agreements) of which you are personally
+ aware, and conspicuously marking the work as "Submitted on behalf of
+ a third-party: [named here]".
+
+8. It is your responsibility to notify MortBay when any change is required
+ to the list of designated employees authorized to submit Contributions
+ on behalf of the Corporation, or to the Corporation's Point of Contact
+ with MortBay.
+
+Date:
+
+Signature:
+
+Name:
+
+Positions:
+
+
+
+Schedule A
+
+ Name Date added
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
+ ______________________________________ ________________
+
diff --git a/LICENSE-CONTRIBUTOR/cla-djencks.txt b/LICENSE-CONTRIBUTOR/cla-djencks.txt
new file mode 100644
index 0000000000..8af1b91816
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-djencks.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: David Jencks
+ E-Mail: david_jencks@yahoo.com
+ Mailing Address: 2215 SE 39th Ave, Portland OR 97214 USA
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: 27 June 2008
+Please sign: David Jencks
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.7 (Darwin)
+
+iD8DBQFIZT2ToF6+5lbz4BsRAs3wAJ9puXC26Nr8nhFvTZ9oNwxDFV/DVACgnC8O
+VFUWPZrfLOJesKa0/rYNJlM=
+=jC7I
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-gregw.txt b/LICENSE-CONTRIBUTOR/cla-gregw.txt
new file mode 100644
index 0000000000..c9f40fc49d
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-gregw.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Gregory John Wilkins
+ E-Mail: gregw@eclipse.com
+ Mailing Address: 62 Church St. Balmain, NSW 2041, Australia
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date:
+Please sign:
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.1 (GNU/Linux)
+
+iD8DBQFEEaStXR9WPTAwnLARAjsNAJ4jBB6wCEqucFljGge7yrAMSrFv/gCgoMC+
+5hdry6ZjXRcUhQEyNz2F/T4=
+=I4Co
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-janb.txt b/LICENSE-CONTRIBUTOR/cla-janb.txt
new file mode 100644
index 0000000000..f4dbd7a37b
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-janb.txt
@@ -0,0 +1,139 @@
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Jan Bartel
+ E-Mail: janb@eclipse.com
+ Mailing Address: 62 Church St Balmain NSW 2041 Australia
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: 10 March 2006
+Please sign: PGP
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.1 (GNU/Linux)
+
+iD8DBQFDjMI6J97Uv2IW248RAmGNAJ9/krpkiYJRrJTMXVkL3cdnVvfU+QCfYFEh
+pN0h9U/xdFTRMFsXYFHQeN4=
+=24Hd
+-----END PGP SIGNATURE-----
+
diff --git a/LICENSE-CONTRIBUTOR/cla-jesse.txt b/LICENSE-CONTRIBUTOR/cla-jesse.txt
new file mode 100644
index 0000000000..f38ac0c822
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-jesse.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Jesse C. McConnell
+ E-Mail: jmcconnell@apache.org
+ Mailing Address: 7717 S 167th Street, Omaha, Ne. 68136
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: December 19 2007
+Please sign: GPG
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQFHacMO+jg6q+ULyBMRAky4AJ9CdNKsmg8n2aFcpQAvcEPXxEjIJACgrvjM
+C/W/GuQFfCJJykkL2jd9/Ag=
+=ufUh
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-jfarcand.txt b/LICENSE-CONTRIBUTOR/cla-jfarcand.txt
new file mode 100644
index 0000000000..df8b908551
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-jfarcand.txt
@@ -0,0 +1,142 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Jeanfrancois Arcand
+ E-Mail: jfarcand@apache.org
+ Mailing Address: 1800 McGill College Avenue, Suite 800, H3A 3J6 Montreal,
+ Quebec (Canada)
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: /28/08/06
+Please sign:
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.0.7 (GNU/Linux)
+
+iD8DBQFE85cgaq9Frj/CIrIRAmuJAKCFgi4W0UOH8IUn+SV6PBHRF3BnLgCcDqqC
+Zokttk0bTHfwaa5TtxQbScw=
+=N/w/
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-jstrachan.txt b/LICENSE-CONTRIBUTOR/cla-jstrachan.txt
new file mode 100644
index 0000000000..e3508a6aa1
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-jstrachan.txt
@@ -0,0 +1,143 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: James Strachan
+ E-Mail: jstrachan@apache.org
+ Mailing Address: 1A Leigh Road, London, UK, N5 1ST
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In
+return, MortBay shall not use Your Contributions in a way that
+is contrary to the public benefit or inconsistent with its nonprofit
+status and bylaws in effect at the time of the Contribution. Except
+for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title,
+and interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: January 30th 2006
+Please sign: GPG
+
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.1 (Darwin)
+
+iD8DBQFD37/4dL6IZr4c+6kRAtsIAJ41tfd3lj4OM6sIMfJfTOdYdT1bxwCdGgWv
+8sfMxEDZquIqhVbfZU2c76U=
+=8WW7
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-jules.txt b/LICENSE-CONTRIBUTOR/cla-jules.txt
new file mode 100644
index 0000000000..c391148066
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-jules.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Julian Anthony Fox Gosnell
+ E-Mail: jules@coredevelopers.net
+ Mailing Address: 2, Tannery Cottages, Tannery Lane, Bramley, Surrey, GU5 0AB, UK.
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: 10th March 2006
+Please sign:
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.2.1 (GNU/Linux)
+
+iD8DBQFEEbh9SoT4b97cQk4RAnCMAKCuNGYLHa6n/Ot3GEdwCCLeQxsMPACdEhnE
+I/stizRWWZZkeLbcglzdQCE=
+=piHm
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-ngonzalez.txt b/LICENSE-CONTRIBUTOR/cla-ngonzalez.txt
new file mode 100644
index 0000000000..1954fd025f
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-ngonzalez.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Nicanor Gonzalez
+ E-Mail: ngonzalez@exist.com
+ Mailing Address: 37 TwinHill St., New Manila Rolling Hills, Q.C., Philippines
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: July 14, 2006
+Please sign:
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.4 (MingW32)
+
+iD8DBQFEt1ZxHR/ESK2w6H8RApbOAJ9c1eooNr2oN59WZVitJExGJjUvKgCfaKji
+6etDJ6AUj0jTuSl59hUsWMQ=
+=HmqH
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-sbordet.txt b/LICENSE-CONTRIBUTOR/cla-sbordet.txt
new file mode 100644
index 0000000000..af7f827bb9
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-sbordet.txt
@@ -0,0 +1,140 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Simone Bordet
+ E-Mail: simone.bordet@gmail.com
+ Mailing Address:
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date: 8 January 2007
+Please sign:
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.3 (GNU/Linux)
+
+iD8DBQFFoniQJVhlFus9dGQRAmJmAJwL5y1loonhVQIICsparvjHMQuwqwCgiZFy
+LBDVaad1bJ1v1EHY901kPcg=
+=6rqm
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-CONTRIBUTOR/cla-template.txt b/LICENSE-CONTRIBUTOR/cla-template.txt
new file mode 100644
index 0000000000..6d99754cb5
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-template.txt
@@ -0,0 +1,131 @@
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name:
+ E-Mail:
+ Mailing Address:
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date:
+Please sign:
+
diff --git a/LICENSE-CONTRIBUTOR/cla-tvernum.txt b/LICENSE-CONTRIBUTOR/cla-tvernum.txt
new file mode 100644
index 0000000000..46c5cf9b22
--- /dev/null
+++ b/LICENSE-CONTRIBUTOR/cla-tvernum.txt
@@ -0,0 +1,141 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Jetty Project
+Contributor License Agreement V1.0
+based on http://www.apache.org/licenses/
+
+Thank you for your interest in the Jetty project by Mort Bay
+Consulting Pty. Ltd. Australia ("MortBay").
+In order to clarify the intellectual property license
+granted with Contributions from any person or entity, MortBay
+must have a Contributor License Agreement ("CLA") that has
+been signed by each Contributor, indicating agreement to the license
+terms below. This license is for your protection as a Contributor as
+well as the protection of MortBay and its users; it does not
+change your rights to use your own Contributions for any other
+purpose.
+
+If you have not already done so, please complete this agreement
+and commit it to the Jetty repository at
+svn+ssh://svn.jetty.codehaus.org/home/projects/jetty/scm/jetty
+at legal/cla-USERNAME.txt using your authenticated codehaus ssh
+login. If you do not have commit privilege to the repository, please
+email the file to eclipse@eclipse.com. If possible, digitally sign
+the committed file, otherwise also send a signed Agreement to MortBay.
+
+Please read this document carefully before signing and keep a copy for
+your records.
+
+ Full name: Timothy Philip Vernum
+ E-Mail: tim@adjective.org
+ Mailing Address: 7/9-11 Cook St, Sutherland, NSW 2232, Australia
+
+You accept and agree to the following terms and conditions for Your
+present and future Contributions submitted to MortBay. In return,
+MortBay shall not use Your Contributions in a way that is contrary
+to the software license in effect at the time of the Contribution.
+Except for the license granted herein to MortBay and recipients of
+software distributed by MortBay, You reserve all right, title, and
+interest in and to Your Contributions.
+
+1. Definitions.
+
+ "You" (or "Your") shall mean the copyright owner or legal entity
+ authorized by the copyright owner that is making this Agreement
+ with MortBay. For legal entities, the entity making a
+ Contribution and all other entities that control, are controlled
+ by, or are under common control with that entity are considered to
+ be a single Contributor. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "Contribution" shall mean any original work of authorship,
+ including any modifications or additions to an existing work, that
+ is intentionally submitted by You to MortBay for inclusion
+ in, or documentation of, any of the products owned or managed by
+ MortBay (the "Work"). For the purposes of this definition,
+ "submitted" means any form of electronic, verbal, or written
+ communication sent to MortBay or its representatives,
+ including but not limited to communication on electronic mailing
+ lists, source code control systems, and issue tracking systems that
+ are managed by, or on behalf of, MortBay for the purpose of
+ discussing and improving the Work, but excluding communication that
+ is conspicuously marked or otherwise designated in writing by You
+ as "Not a Contribution."
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare derivative works of,
+ publicly display, publicly perform, sublicense, and distribute Your
+ Contributions and such derivative works.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this Agreement, You hereby grant to MortBay and to
+ recipients of software distributed by MortBay a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have
+ made, use, offer to sell, sell, import, and otherwise transfer the
+ Work, where such license applies only to those patent claims
+ licensable by You that are necessarily infringed by Your
+ Contribution(s) alone or by combination of Your Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If any
+ entity institutes patent litigation against You or any other entity
+ (including a cross-claim or counterclaim in a lawsuit) alleging
+ that your Contribution, or the Work to which you have contributed,
+ constitutes direct or contributory patent infringement, then any
+ patent licenses granted to that entity under this Agreement for
+ that Contribution or Work shall terminate as of the date such
+ litigation is filed.
+
+4. You represent that you are legally entitled to grant the above
+ license. If your employer(s) has rights to intellectual property
+ that you create that includes your Contributions, you represent
+ that you have received permission to make Contributions on behalf
+ of that employer, that your employer has waived such rights for
+ your Contributions to MortBay, or that your employer has
+ executed a separate Corporate CLA with MortBay.
+
+5. You represent that each of Your Contributions is Your original
+ creation (see section 7 for submissions on behalf of others). You
+ represent that Your Contribution submissions include complete
+ details of any third-party license or other restriction (including,
+ but not limited to, related patents and trademarks) of which you
+ are personally aware and which are associated with any part of Your
+ Contributions.
+
+6. You are not expected to provide support for Your Contributions,
+ except to the extent You desire to provide support. You may provide
+ support for free, for a fee, or not at all. Unless required by
+ applicable law or agreed to in writing, You provide Your
+ Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied, including, without
+ limitation, any warranties or conditions of TITLE, NON-
+ INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
+
+7. Should You wish to submit work that is not Your original creation,
+ You may submit it to MortBay separately from any
+ Contribution, identifying the complete details of its source and of
+ any license or other restriction (including, but not limited to,
+ related patents, trademarks, and license agreements) of which you
+ are personally aware, and conspicuously marking the work as
+ "Submitted on behalf of a third-party: [named here]".
+
+8. You agree to notify MortBay of any facts or circumstances of
+ which you become aware that would make these representations
+ inaccurate in any respect.
+
+Date:
+Please sign:
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.1 (Darwin)
+
+iD8DBQFEnjfA9nwdoZUd8/ERArwdAJ4lzyXEi4zSlIiJwEAxknGPhzMRswCfRsdI
+RUIoI0BYmYpaETSqxt2oLFU=
+=Tr57
+-----END PGP SIGNATURE-----
diff --git a/LICENSE-ECLIPSE-1.0.html b/LICENSE-ECLIPSE-1.0.html
new file mode 100644
index 0000000000..9320c9f37c
--- /dev/null
+++ b/LICENSE-ECLIPSE-1.0.html
@@ -0,0 +1,320 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/legal/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head><body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><!--[if !supportEmptyParas]-->&nbsp;<!--[endif]--><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 0000000000..8cda6d5719
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,21 @@
+==============================================================
+ Jetty Web Container
+ Copyright 1995-2009 Mort Bay Consulting Pty Ltd
+==============================================================
+
+The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd
+unless otherwise noted. It is dual licensed under the apache 2.0
+license and eclipse 1.0 license. Jetty may be distributed under
+either license.
+
+The javax.servlet package used was sourced from the Apache
+Software Foundation and is distributed under the apache 2.0
+license.
+
+The UnixCrypt.java code implements the one way cryptography used by
+Unix systems for simple password protection. Copyright 1996 Aki Yoshida,
+modified April 2001 by Iris Van den Broeke, Daniel Deville.
+Permission to use, copy, modify and distribute UnixCrypt
+for non-commercial or commercial purposes and without fee is
+granted provided that the copyright notice appears in all copies.
+
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000000..23fe075f82
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,17 @@
+
+This is the Jetty 7 HTTP server and servlet container.
+
+For more information about Jetty, please see the Jetty wiki:
+
+ http://docs.codehaus.org/display/JETTY/
+
+
+BUILDING JETTY
+==============
+
+Jetty uses maven 2 as its build system. Maven will fetch
+the dependancies, build the server and assemble a runnable
+version:
+
+ mvn install
+
diff --git a/VERSION.txt b/VERSION.txt
new file mode 100644
index 0000000000..af4eb9bed3
--- /dev/null
+++ b/VERSION.txt
@@ -0,0 +1,3968 @@
+jetty-7.0.0.incubator0-SNAPSHOT
+ + 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-748 Reduced retries on async writes
+ + 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
+
+jetty-6.1.15 4 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 2 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 4 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 Oct 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 Oct 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 - 6 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 1 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 6 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 - 3 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-282 Support manually-triggered reloading by maven plugin
+ + 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
+ + Add removeHandler(Handler) method to HandlerContainer interface
+ + 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 - 5 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 - 3 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 CERT21284 Added protection for response splitting with bad headers.
+ + Cached user agents strings in the /org/eclipse/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 Jul 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 Jul 2007
+ + 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 Jun 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 Jun 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 - 1 Jun 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 - 4 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 - 1 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-309 force writable status of endpoints.
+ + 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-278 Only unwrap one layer of ServletExceptions
+ + 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 - 8 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 5 Feb 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 1 Feb 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 Jan 2007
+jetty-6.1.1rc1 - 12 Jan 2007
+ + Use timers for Rollover logs and scanner
+ + JETTY-210 Build jsp-api-2.0 for java 1.4
+
+jetty-6.1.1rc0 - 10 Jan 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 - 9 Jan 2007
+ + Fixed unpacking WAR
+jetty-6.1.0 - 5 Jan 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 - 2 Jan 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 - 8 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.eclipse.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
+ + fixed 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-151 refactored writers
+ + 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 - 9 Aug 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 Nov 2006
+ + Added extraClassPath to WebAppContext
+ + Fixed resource cache flushing
+ + Clean up jboss module licensing
+
+jetty-6.1.0pre1 - 19 Nov 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-151 refactored writers
+
+jetty-6.1.0pre0 - 21 Oct 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 - 8 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 - 8 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
+ + Improved charset handling in URLs
+ + 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 - 5 September 2006
+ + bind jetty-env.xml entries to java:comp/env
+ + Fix for JETTY-107. Poor cast in SessionDump demo.
+ + Set charset on error pages
+
+jetty-6.0.0rc3 - 1 September 2006
+ + pulled 6.0.0 branch
+ + turn URLConnection caching off when searching for tlds [JETTY-103]
+ + Move MailSessionReference to org.eclipse.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
+ + temp fix for JETTY-104 (raised glassfish ISSUE-1044) hide
+ JSP forced path attribute
+ + Fixed 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
+ + Ensure classes come before dependencies for plugin [JETTY-90]
+ + Fixed FD leak for bad TCP acks. JETTY-63
+ + new Server().addHandler(handler) no longer throws NPE [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
+ + Improve Ssl config 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
+ + added toString() on JAASUserPrincipal (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.eclipse. 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 - 7 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 - 1/6/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/5/2006
+ + remove a couple of System.err.printlns
+ + replace backwards compativle API in UrlEncoded
+
+jetty-6.0.0beta15 - 11/5/2006
+ + Added Server attribute org.eclipse.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 - 9/4/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/3/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/3/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/2/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 9/2/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/1/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.eclipse 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 - 5 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 - 5 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 - 4 Jan 2006
+ + Fixed aliasing of // for win32
+
+Jetty-5.1.9 - 7 December 2005
+ + Fixed wantClientAuth(false) overriding netClientAuth(true)
+
+Jetty-6.0.0betaX -
+ + See http://jetty.eclipse.org/jetty6 for 6.0 releases
+
+Jetty-5.1.8 - 7 December 2005
+ + Fixed space in URL issued created in 5.1.6
+
+Jetty-5.1.7 - 7 December 2005
+Jetty-5.1.7rc0 - 6 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.eclipse.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.eclipse classes.
+
+Jetty-5.1.5 - 10 November 2005
+ + Improved shutdown hook
+ + Improved URL Decoding
+ + Improved mapping of JSP files.
+
+Jetty-5.1.5rc2 - 7 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 - 5 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 - 7 April 2005
+ + Some minor code janitorial services
+
+Jetty-4.2.24 - 7 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 - 8 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 - 8 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 - 1 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 - 5 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 - 23 August
+ + 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 - 2 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 - 2 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 - 7 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 - 7 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 Mar 2004
+ + Fixed DOS attack problem
+
+Jetty-5.0.beta2 - 12 Feb 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 - 1 Mar 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 - 1 Feb 2004
+ + Fixed busy loop in threadpool run
+ + Reorganized ServletHolder init
+
+Jetty-4.2.16 - 30 Jan 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.eclipse.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.eclipse.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 - 7 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 Jul 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.eclipse.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 - 7 July 2003
+ + Updates to JettyPlus documentation
+ + Updates to Jetty tutorial for start.jar, jmx etc
+
+Jetty-4.2.10pre2 - 4 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 - 2 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.eclipse.http.User role.
+ + Fixed problem with shared session for inter context dispatching.
+
+Jetty-4.2.10pre0 - 5 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 - 6 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 - 4 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 - 4 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 - 2 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.eclipse.http.Version
+ + Check form authentication config for leading /
+ + Cleaner servlet stop to avoid extra synchronization on handle
+ + org.eclipse.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
+ + 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 - 2 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/eclipse/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 - 8 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 - 8 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 - 6 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 - 6 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 - 5 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 Mar 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 Feb 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 Feb 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.eclipse.http.JDBCUserRealm
+ + Init classloader for JspServlet
+ + Slightly more agressive eating unused input from non persistent connection.
+
+Jetty-4.0.B1 - 13 Feb 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 - 4 Feb 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 Jan 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 Dec 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 Dec 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 - 2 Dec 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.
+ + Allow POSTs to static resources.
+ + stopJob/killStop in ThreadPool to improve stopping
+ThreadedServer on some platforms.
+
+Jetty-4.0.D1 - 14 Nov 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 Nov 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 Nov 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 Oct 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.eclipse.http.PathMap.separators system property.
+ + Correct dispatch to error pages with javax attributes set.
+
+Jetty-3.1.2 - 13 Oct 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 Sep 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 Sep 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 Sep 2001
+ + Added bin/orgPackage.sh script to change package names.
+ + Changed to org.eclipse 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 Aug 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 - 9 Aug 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 Jul 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 - 1 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 Apr 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 Apr 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 - 9 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 Mar 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 Mar 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 Feb 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 Feb 2001
+ + Fixed LineInput bug with split CRLF.
+
+Jetty-3.0.3 - 3 Feb 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 Jan 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 Dec 2000
+ + Fixed value unbind notification for session invalidation.
+ + Removed double null check possibility from ServletHolder
+
+Jetty-3.0.0 - 17 Dec 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 Dec 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 Dec 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.eclipse.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 Nov 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.eclipse.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 Nov 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 Nov 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 - 6 Nov 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 - 5 Nov 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.eclipse.Util to com.eclipse.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 Oct 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 Oct 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.eclipse. name spaces to be set.
+ + Partial handling of 0.9 requests.
+ + removed Thread.destroy() calls.
+ + Cleaned up exception handling.
+
+Jetty-2.4.8 23 Oct 2000
+ + Fixed bug with 304 replies with bodies.
+ + Improved win32 make files.
+ + Fixed closing socket problem
+
+Jetty-3.0.B05 - 18 Oct 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 Oct 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 - 9th Oct 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 - 6th Oct 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 - 24st Aug 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 - 21st Aug 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 - 16th Aug 2000
+ + Turn Linger off before closing sockets, to allow restart.
+ + JsseListener & SunJsseListener added and documented
+ + com.eclipse.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 Aug 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 - 9th 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 - 7 June 2000
+ + Added HTML classes to jar
+ + Fixed redirection bug in FileHandler
+
+Jetty-2.4.4 - 3rd 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 - 3 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 - 7 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 4th May 2000
+ + Servlet2_1 class loading re-acrchitected. See README.
+ + Moved Sevlet2_1 handler to com.eclipse.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 - 4th May 2000 STABLE
+ + Pass Cookies with 0 max age to browser.
+ + Allow CRLF in UrlEncoded
+
+Jetty-2.4.2 - 23rd 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 Apr 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 - 9th 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 - 9 Apr 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 - 24th 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 - 25th 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 - 18th 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 Oct 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 - 19th October 1999 STABLE
+ + 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 - 17th October 1999
+ + Fixed getReader bug with HttpRequest.
+ + Updated UrlEncoded with Jetty3 version.
+
+Jetty-3.0.A4 - 16 Oct 1999
+ + Request attributes
+ + Basic Authentication Handler.
+ + Added LF wait after CR to LineInput.
+ + UTF8 in UrlDecoded.decodeString.
+
+Jetty-2.3.1 - 14th 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 Oct 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 Oct 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 Oct 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 - 9 Oct 1999
+ + Started fresh repository in CVS
+ + Moved com.eclipse.Base classes to com.eclipse.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 - 5th 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 Sep 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 Sep 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 - 9 Sep 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 - 5 Sep 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 Aug 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 - 2 Aug 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.eclipse.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.eclipse.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.eclipse.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.eclipse.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 - 1 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.eclipse.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.eclipse.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 - 7 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.eclipse.Jetty.StressTester class
+ + Token effort to keep test files out of the jar
+ + Removed support for STF
+
+Jetty-2.2.Alpha1 - 7 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 - 6 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.eclipse.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.eclipse.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 - 9 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 - 5 March 1999
+ + Reduced number of calls to getRemoteHost for optimization
+ + Faster version of HttpInputStream.readLine().
+ + com.eclipse.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.eclipse.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.eclipse.Util.Gateway with
+class com.eclipse.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.eclipse.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.eclipse.Jetty.Server would not handle
+index.html files. Need to make this configurable in the prp file.
+ + Fixed errors in README file: com.eclipse.Jetty.Server was called
+com.eclipse.HTTP.Server
+
+Jetty-2.0.2 - 1 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 Sep 1998
+ + Send 301 for directories without trailing / in FileHandler
+ + Ignore exception from HttpListener
+ + Properly implemented multiple listening addresses
+ + Added com.eclipse.Jetty.Server (see README.Jetty)
+ + Demo converted to an instance of com.eclipse.Jetty.Server
+ + Fixed Log Handler again.
+ + Added com.eclipse.HTTP.MultiPartRequest to handle file uploads
+
+Jetty-2.0Beta2 - July 1998
+ + Fixed Log Handler for HTTP/1.1
+ + Slight improvement in READMEEs
+
+Jetty-2.0Beta1 - 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.eclipse.HTML.Page
+ + Provided reset on com.eclipse.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 - 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 May 1998
+ + Fixed socket inet bug in FTP
+ + Debug triggers added to com.eclipse.Base.Code
+ + Added date format to Log
+ + Correct handling of multiple parameters
+
+Jetty-2.0Alpha1 Wed 8 April 1998
+ + Fixed forward bug with no port number
+ + Removed HttpRequestHeader class
+ + Debug triggers added to com.eclipse.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 - Sun 15 Mar 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.eclipse.JDBC
+ + Moved HttpCode to com.eclipse.Util
+
+Jetty-1.0.1
+ + Bug fixes
+
+Jetty-1.0
+ + First release in com.eclipse package structure
+ + Included Util, JDBC, HTML, HTTP, Jetty
+
+
+
+
+
+
+
diff --git a/jetty-ajp/pom.xml b/jetty-ajp/pom.xml
new file mode 100644
index 0000000000..903a836e90
--- /dev/null
+++ b/jetty-ajp/pom.xml
@@ -0,0 +1,76 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-project</artifactId>
+ <version>7.0.0.incubation0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>jetty-ajp</artifactId>
+ <name>Jetty :: AJP</name>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>1.4.2</version>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>org.eclipse.jetty.ajp</Bundle-SymbolicName>
+ <Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
+ <Bundle-DocURL>http://jetty.eclipse.org</Bundle-DocURL>
+ <Export-Package>org.eclipse.jetty.ajp;version=${project.version}</Export-Package>
+ </instructions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!--
+ Required for OSGI
+ -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>config.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/jetty-ajp/src/main/config/etc/jetty-ajp.xml b/jetty-ajp/src/main/config/etc/jetty-ajp.xml
new file mode 100644
index 0000000000..191401c7de
--- /dev/null
+++ b/jetty-ajp/src/main/config/etc/jetty-ajp.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd">
+
+<Configure id="Server" class="org.eclipse.jetty.server.Server">
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <!-- Add a AJP listener on port 8009 -->
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+ <Call name="addConnector">
+ <Arg>
+ <New class="org.eclipse.jetty.ajp.Ajp13SocketConnector">
+ <Set name="port">8009</Set>
+ </New>
+ </Arg>
+ </Call>
+
+</Configure>
+
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Connection.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Connection.java
new file mode 100644
index 0000000000..249c81301d
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Connection.java
@@ -0,0 +1,252 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.util.Collection;
+
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.HttpException;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Server;
+
+/**
+ * Connection implementation of the Ajp13 protocol. <p/> XXX Refactor to remove
+ * duplication of HttpConnection
+ *
+ *
+ *
+ */
+public class Ajp13Connection extends HttpConnection
+{
+ public Ajp13Connection(Connector connector, EndPoint endPoint, Server server)
+ {
+ super(connector, endPoint, server,
+ new Ajp13Parser(connector, endPoint),
+ new Ajp13Generator(connector, endPoint, connector.getHeaderBufferSize(), connector.getResponseBufferSize()),
+ new Ajp13Request()
+ );
+
+ ((Ajp13Parser)_parser).setEventHandler(new RequestHandler());
+ ((Ajp13Parser)_parser).setGenerator((Ajp13Generator)_generator);
+ ((Ajp13Request)_request).setConnection(this);
+ }
+
+ public boolean isConfidential(Request request)
+ {
+ return ((Ajp13Request) request).isSslSecure();
+ }
+
+ public boolean isIntegral(Request request)
+ {
+ return ((Ajp13Request) request).isSslSecure();
+ }
+
+ public ServletInputStream getInputStream()
+ {
+ if (_in == null)
+ _in = new Ajp13Parser.Input((Ajp13Parser) _parser, _connector.getMaxIdleTime());
+ return _in;
+ }
+
+ private class RequestHandler implements Ajp13Parser.EventHandler
+ {
+ boolean _delayedHandling = false;
+
+ public void startForwardRequest() throws IOException
+ {
+ _delayedHandling = false;
+ _uri.clear();
+
+ ((Ajp13Request) _request).setSslSecure(false);
+ _request.setTimeStamp(System.currentTimeMillis());
+ _request.setUri(_uri);
+
+ }
+
+ public void parsedAuthorizationType(Buffer authType) throws IOException
+ {
+ //TODO JASPI this doesn't appear to make sense yet... how does ajp auth fit into jetty auth?
+// _request.setAuthType(authType.toString());
+ }
+
+ public void parsedRemoteUser(Buffer remoteUser) throws IOException
+ {
+ ((Ajp13Request)_request).setRemoteUser(remoteUser.toString());
+ }
+
+ public void parsedServletPath(Buffer servletPath) throws IOException
+ {
+ _request.setServletPath(servletPath.toString());
+ }
+
+ public void parsedContextPath(Buffer context) throws IOException
+ {
+ _request.setContextPath(context.toString());
+ }
+
+ public void parsedSslCert(Buffer sslCert) throws IOException
+ {
+ try
+ {
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ ByteArrayInputStream bis = new ByteArrayInputStream(sslCert.toString().getBytes());
+
+ Collection<? extends java.security.cert.Certificate> certCollection = cf.generateCertificates(bis);
+ X509Certificate[] certificates = new X509Certificate[certCollection.size()];
+
+ int i=0;
+ for (Object aCertCollection : certCollection)
+ {
+ certificates[i++] = (X509Certificate) aCertCollection;
+ }
+
+ _request.setAttribute("javax.servlet.request.X509Certificate", certificates);
+ }
+ catch (Exception e)
+ {
+ org.eclipse.jetty.util.log.Log.warn(e.toString());
+ org.eclipse.jetty.util.log.Log.ignore(e);
+ if (sslCert!=null)
+ _request.setAttribute("javax.servlet.request.X509Certificate", sslCert.toString());
+ }
+ }
+
+ public void parsedSslCipher(Buffer sslCipher) throws IOException
+ {
+ _request.setAttribute("javax.servlet.request.cipher_suite", sslCipher.toString());
+ }
+
+ public void parsedSslSession(Buffer sslSession) throws IOException
+ {
+ _request.setAttribute("javax.servlet.request.ssl_session", sslSession.toString());
+ }
+
+ public void parsedSslKeySize(int keySize) throws IOException
+ {
+ _request.setAttribute("javax.servlet.request.key_size", new Integer(keySize));
+ }
+
+ public void parsedMethod(Buffer method) throws IOException
+ {
+ if (method == null)
+ throw new HttpException(HttpServletResponse.SC_BAD_REQUEST);
+ _request.setMethod(method.toString());
+ }
+
+ public void parsedUri(Buffer uri) throws IOException
+ {
+ _uri.parse(uri.toString());
+ }
+
+ public void parsedProtocol(Buffer protocol) throws IOException
+ {
+ if (protocol != null && protocol.length()>0)
+ {
+ _request.setProtocol(protocol.toString());
+ }
+ }
+
+ public void parsedRemoteAddr(Buffer addr) throws IOException
+ {
+ if (addr != null && addr.length()>0)
+ {
+ _request.setRemoteAddr(addr.toString());
+ }
+ }
+
+ public void parsedRemoteHost(Buffer name) throws IOException
+ {
+ if (name != null && name.length()>0)
+ {
+ _request.setRemoteHost(name.toString());
+ }
+ }
+
+ public void parsedServerName(Buffer name) throws IOException
+ {
+ if (name != null && name.length()>0)
+ {
+ _request.setServerName(name.toString());
+ }
+ }
+
+ public void parsedServerPort(int port) throws IOException
+ {
+ _request.setServerPort(port);
+ }
+
+ public void parsedSslSecure(boolean secure) throws IOException
+ {
+ ((Ajp13Request) _request).setSslSecure(secure);
+ }
+
+ public void parsedQueryString(Buffer value) throws IOException
+ {
+ String u = _uri + "?" + value;
+ _uri.parse(u);
+ }
+
+ public void parsedHeader(Buffer name, Buffer value) throws IOException
+ {
+ _requestFields.add(name, value);
+ }
+
+ public void parsedRequestAttribute(String key, Buffer value) throws IOException
+ {
+ _request.setAttribute(key, value.toString());
+ }
+
+ public void parsedRequestAttribute(String key, int value) throws IOException
+ {
+ _request.setAttribute(key, Integer.toString(value));
+ }
+
+ public void headerComplete() throws IOException
+ {
+ if (((Ajp13Parser) _parser).getContentLength() <= 0)
+ {
+ handleRequest();
+ }
+ else
+ {
+ _delayedHandling = true;
+ }
+ }
+
+ public void messageComplete(long contextLength) throws IOException
+ {
+ }
+
+ public void content(Buffer ref) throws IOException
+ {
+ if (_delayedHandling)
+ {
+ _delayedHandling = false;
+ handleRequest();
+ }
+ }
+
+ }
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Generator.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Generator.java
new file mode 100644
index 0000000000..aca8bb100e
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Generator.java
@@ -0,0 +1,803 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+import org.eclipse.jetty.http.AbstractGenerator;
+import org.eclipse.jetty.http.HttpFields;
+import org.eclipse.jetty.http.HttpGenerator;
+import org.eclipse.jetty.http.HttpTokens;
+import org.eclipse.jetty.http.HttpVersions;
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.Buffers;
+import org.eclipse.jetty.io.ByteArrayBuffer;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.EofException;
+import org.eclipse.jetty.util.TypeUtil;
+import org.eclipse.jetty.util.log.Log;
+
+/**
+ *
+ *
+ */
+public class Ajp13Generator extends AbstractGenerator
+{
+ private static HashMap __headerHash = new HashMap();
+
+ static
+ {
+ byte[] xA001 =
+ { (byte) 0xA0, (byte) 0x01 };
+ byte[] xA002 =
+ { (byte) 0xA0, (byte) 0x02 };
+ byte[] xA003 =
+ { (byte) 0xA0, (byte) 0x03 };
+ byte[] xA004 =
+ { (byte) 0xA0, (byte) 0x04 };
+ byte[] xA005 =
+ { (byte) 0xA0, (byte) 0x05 };
+ byte[] xA006 =
+ { (byte) 0xA0, (byte) 0x06 };
+ byte[] xA007 =
+ { (byte) 0xA0, (byte) 0x07 };
+ byte[] xA008 =
+ { (byte) 0xA0, (byte) 0x08 };
+ byte[] xA009 =
+ { (byte) 0xA0, (byte) 0x09 };
+ byte[] xA00A =
+ { (byte) 0xA0, (byte) 0x0A };
+ byte[] xA00B =
+ { (byte) 0xA0, (byte) 0x0B };
+ __headerHash.put("Content-Type", xA001);
+ __headerHash.put("Content-Language", xA002);
+ __headerHash.put("Content-Length", xA003);
+ __headerHash.put("Date", xA004);
+ __headerHash.put("Last-Modified", xA005);
+ __headerHash.put("Location", xA006);
+ __headerHash.put("Set-Cookie", xA007);
+ __headerHash.put("Set-Cookie2", xA008);
+ __headerHash.put("Servlet-Engine", xA009);
+ __headerHash.put("Status", xA00A);
+ __headerHash.put("WWW-Authenticate", xA00B);
+
+ }
+
+ // A, B ajp response header
+ // 0, 1 ajp int 1 packet length
+ // 9 CPONG response Code
+ private static final byte[] AJP13_CPONG_RESPONSE =
+ { 'A', 'B', 0, 1, 9};
+
+ private static final byte[] AJP13_END_RESPONSE =
+ { 'A', 'B', 0, 2, 5, 1 };
+
+ // AB ajp respose
+ // 0, 3 int = 3 packets in length
+ // 6, send signal to get more data
+ // 31, -7 byte values for int 8185 = (8 * 1024) - 7 MAX_DATA
+ private static final byte[] AJP13_MORE_CONTENT =
+ { 'A', 'B', 0, 3, 6, 31, -7 };
+
+ private static String SERVER = "Server: Jetty(6.0.x)";
+
+ public static void setServerVersion(String version)
+ {
+ SERVER = "Jetty(" + version + ")";
+ }
+
+ /* ------------------------------------------------------------ */
+ private boolean _expectMore = false;
+
+ private boolean _needMore = false;
+
+ private boolean _needEOC = false;
+
+ private boolean _bufferPrepared = false;
+
+ /* ------------------------------------------------------------ */
+ public Ajp13Generator(Buffers buffers, EndPoint io, int headerBufferSize, int contentBufferSize)
+ {
+ super(buffers, io, headerBufferSize, contentBufferSize);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void reset(boolean returnBuffers)
+ {
+ super.reset(returnBuffers);
+
+ _needEOC = false;
+ _needMore = false;
+ _expectMore = false;
+ _bufferPrepared = false;
+ _last=false;
+
+
+
+ _state = STATE_HEADER;
+
+ _status = 0;
+ _version = HttpVersions.HTTP_1_1_ORDINAL;
+ _reason = null;
+ _method = null;
+ _uri = null;
+
+ _contentWritten = 0;
+ _contentLength = HttpTokens.UNKNOWN_CONTENT;
+ _last = false;
+ _head = false;
+ _noContent = false;
+ _close = false;
+
+
+
+
+ _header = null; // Buffer for HTTP header (and maybe small _content)
+ _buffer = null; // Buffer for copy of passed _content
+ _content = null; // Buffer passed to addContent
+
+
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Add content.
+ *
+ * @param content
+ * @param last
+ * @throws IllegalArgumentException
+ * if <code>content</code> is
+ * {@link Buffer#isImmutable immutable}.
+ * @throws IllegalStateException
+ * If the request is not expecting any more content, or if the
+ * buffers are full and cannot be flushed.
+ * @throws IOException
+ * if there is a problem flushing the buffers.
+ */
+ public void addContent(Buffer content, boolean last) throws IOException
+ {
+ if (_noContent)
+ {
+ content.clear();
+ return;
+ }
+
+ if (content.isImmutable())
+ throw new IllegalArgumentException("immutable");
+
+ if (_last || _state == STATE_END)
+ {
+ Log.debug("Ignoring extra content {}", content);
+ content.clear();
+ return;
+ }
+ _last = last;
+
+ if(!_endp.isOpen())
+ {
+ _state = STATE_END;
+ return;
+ }
+
+ // Handle any unfinished business?
+ if (_content != null && _content.length() > 0)
+ {
+
+ flushBuffer();
+ if (_content != null && _content.length() > 0)
+ throw new IllegalStateException("FULL");
+ }
+
+ _content = content;
+
+ _contentWritten += content.length();
+
+ // Handle the _content
+ if (_head)
+ {
+
+ content.clear();
+ _content = null;
+ }
+ else
+ {
+ // Yes - so we better check we have a buffer
+ initContent();
+ // Copy _content to buffer;
+ int len = 0;
+ len = _buffer.put(_content);
+
+ // make sure there is space for a trailing null
+ if (len > 0 && _buffer.space() == 0)
+ {
+ len--;
+ _buffer.setPutIndex(_buffer.putIndex() - 1);
+ }
+
+ _content.skip(len);
+
+ if (_content.length() == 0)
+ _content = null;
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Add content.
+ *
+ * @param b
+ * byte
+ * @return true if the buffers are full
+ * @throws IOException
+ */
+ public boolean addContent(byte b) throws IOException
+ {
+
+ if (_noContent)
+ return false;
+
+ if (_last || _state == STATE_END)
+ throw new IllegalStateException("Closed");
+
+
+ if(!_endp.isOpen())
+ {
+ _state = STATE_END;
+ return false;
+ }
+
+ // Handle any unfinished business?
+ if (_content != null && _content.length() > 0)
+ {
+ flushBuffer();
+ if (_content != null && _content.length() > 0)
+ throw new IllegalStateException("FULL");
+ }
+
+ _contentWritten++;
+
+ // Handle the _content
+ if (_head)
+ return false;
+
+ // we better check we have a buffer
+ initContent();
+
+ // Copy _content to buffer;
+
+ _buffer.put(b);
+
+ return _buffer.space() <= 1;
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Prepare buffer for unchecked writes. Prepare the generator buffer to
+ * receive unchecked writes
+ *
+ * @return the available space in the buffer.
+ * @throws IOException
+ */
+ public int prepareUncheckedAddContent() throws IOException
+ {
+ if (_noContent)
+ return -1;
+
+ if (_last || _state == STATE_END)
+ throw new IllegalStateException("Closed");
+
+
+ if(!_endp.isOpen())
+ {
+ _state = STATE_END;
+ return -1;
+ }
+
+ // Handle any unfinished business?
+ Buffer content = _content;
+ if (content != null && content.length() > 0)
+ {
+ flushBuffer();
+ if (content != null && content.length() > 0)
+ throw new IllegalStateException("FULL");
+ }
+
+ // we better check we have a buffer
+ initContent();
+
+ _contentWritten -= _buffer.length();
+
+ // Handle the _content
+ if (_head)
+ return Integer.MAX_VALUE;
+
+ return _buffer.space() - 1;
+ }
+
+ /* ------------------------------------------------------------ */
+ public void completeHeader(HttpFields fields, boolean allContentAdded) throws IOException
+ {
+ if (_state != STATE_HEADER)
+ return;
+
+ if (_last && !allContentAdded)
+ throw new IllegalStateException("last?");
+ _last = _last | allContentAdded;
+
+ boolean has_server = false;
+ if (_version == HttpVersions.HTTP_1_0_ORDINAL)
+ _close = true;
+
+ // get a header buffer
+ if (_header == null)
+ _header = _buffers.getBuffer(_headerBufferSize);
+
+ Buffer tmpbuf = _buffer;
+ _buffer = _header;
+
+ try
+ {
+ // start the header
+ _buffer.put((byte) 'A');
+ _buffer.put((byte) 'B');
+ addInt(0);
+ _buffer.put((byte) 0x4);
+ addInt(_status);
+ if (_reason == null)
+ _reason=HttpGenerator.getReasonBuffer(_status);
+ if (_reason == null)
+ _reason = new ByteArrayBuffer(TypeUtil.toString(_status));
+ addBuffer(_reason);
+
+ if (_status == 100 || _status == 204 || _status == 304)
+ {
+ _noContent = true;
+ _content = null;
+ }
+
+
+ // allocate 2 bytes for number of headers
+ int field_index = _buffer.putIndex();
+ addInt(0);
+
+ int num_fields = 0;
+
+ if (fields != null)
+ {
+ // Add headers
+ int s=fields.size();
+ for (int f=0;f<s;f++)
+ {
+ HttpFields.Field field = fields.getField(f);
+ if (field==null)
+ continue;
+ num_fields++;
+
+ byte[] codes = (byte[]) __headerHash.get(field.getName());
+ if (codes != null)
+ {
+ _buffer.put(codes);
+ }
+ else
+ {
+ addString(field.getName());
+ }
+ addString(field.getValue());
+ }
+ }
+
+ if (!has_server && _status > 100 && getSendServerVersion())
+ {
+ num_fields++;
+ addString("Server");
+ addString(SERVER);
+ }
+
+ // TODO Add content length if last content known.
+
+ // insert the number of headers
+ int tmp = _buffer.putIndex();
+ _buffer.setPutIndex(field_index);
+ addInt(num_fields);
+ _buffer.setPutIndex(tmp);
+
+ // get the payload size ( - 4 bytes for the ajp header)
+ // excluding the
+ // ajp header
+ int payloadSize = _buffer.length() - 4;
+ // insert the total packet size on 2nd and 3rd byte that
+ // was previously
+ // allocated
+ addInt(2, payloadSize);
+ }
+ finally
+ {
+ _buffer = tmpbuf;
+ }
+
+
+ _state = STATE_CONTENT;
+
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * Complete the message.
+ *
+ * @throws IOException
+ */
+ public void complete() throws IOException
+ {
+ if (_state == STATE_END)
+ return;
+
+ super.complete();
+
+ if (_state < STATE_FLUSHING)
+ {
+ _state = STATE_FLUSHING;
+ _needEOC = true;
+ }
+
+ flushBuffer();
+ }
+
+ /* ------------------------------------------------------------ */
+ public long flushBuffer() throws IOException
+ {
+ try
+ {
+ if (_state == STATE_HEADER && !_expectMore)
+ throw new IllegalStateException("State==HEADER");
+ prepareBuffers();
+
+ if (_endp == null)
+ {
+ // TODO - probably still needed!
+ // if (_rneedMore && _buffe != null)
+ // {
+ // if(!_hasSentEOC)
+ // _buffer.put(AJP13_MORE_CONTENT);
+ // }
+ if (!_expectMore && _needEOC && _buffer != null)
+ {
+ _buffer.put(AJP13_END_RESPONSE);
+ }
+ _needEOC = false;
+ return 0;
+ }
+
+ // Keep flushing while there is something to flush
+ // (except break below)
+ int total = 0;
+ long last_len = -1;
+ Flushing: while (true)
+ {
+ int len = -1;
+ int to_flush = ((_header != null && _header.length() > 0) ? 4 : 0) | ((_buffer != null && _buffer.length() > 0) ? 2 : 0);
+
+
+ switch (to_flush)
+ {
+ case 7:
+ throw new IllegalStateException(); // should
+ // never
+ // happen!
+ case 6:
+ len = _endp.flush(_header, _buffer, null);
+
+ break;
+ case 5:
+ throw new IllegalStateException(); // should
+ // never
+ // happen!
+ case 4:
+ len = _endp.flush(_header);
+ break;
+ case 3:
+ throw new IllegalStateException(); // should
+ // never
+ // happen!
+ case 2:
+ len = _endp.flush(_buffer);
+
+ break;
+ case 1:
+ throw new IllegalStateException(); // should
+ // never
+ // happen!
+ case 0:
+ {
+ // Nothing more we can write now.
+ if (_header != null)
+ _header.clear();
+
+ _bufferPrepared = false;
+
+ if (_buffer != null)
+ {
+ _buffer.clear();
+
+ // reserve some space for the
+ // header
+ _buffer.setPutIndex(7);
+ _buffer.setGetIndex(7);
+
+ // Special case handling for
+ // small left over buffer from
+ // an addContent that caused a
+ // buffer flush.
+ if (_content != null && _content.length() < _buffer.space() && _state != STATE_FLUSHING)
+ {
+
+ _buffer.put(_content);
+ _content.clear();
+ _content = null;
+ break Flushing;
+ }
+
+ }
+
+
+
+ // Are we completely finished for now?
+ if (!_expectMore && !_needEOC && (_content == null || _content.length() == 0))
+ {
+ if (_state == STATE_FLUSHING)
+ _state = STATE_END;
+
+// if (_state == STATE_END)
+// {
+// _endp.close();
+// }
+//
+
+ break Flushing;
+ }
+
+ // Try to prepare more to write.
+ prepareBuffers();
+ }
+ }
+
+ // If we failed to flush anything twice in a row
+ // break
+ if (len <= 0)
+ {
+ if (last_len <= 0)
+ break Flushing;
+ break;
+ }
+ last_len = len;
+ total += len;
+ }
+
+
+
+ return total;
+ }
+ catch (IOException e)
+ {
+ Log.ignore(e);
+ throw (e instanceof EofException) ? e : new EofException(e);
+ }
+
+ }
+
+ /* ------------------------------------------------------------ */
+ private void prepareBuffers()
+ {
+ if (!_bufferPrepared)
+ {
+
+ // Refill buffer if possible
+ if (_content != null && _content.length() > 0 && _buffer != null && _buffer.space() > 0)
+ {
+
+ int len = _buffer.put(_content);
+
+ // Make sure there is space for a trailing null
+ if (len > 0 && _buffer.space() == 0)
+ {
+ len--;
+ _buffer.setPutIndex(_buffer.putIndex() - 1);
+ }
+ _content.skip(len);
+
+ if (_content.length() == 0)
+ _content = null;
+
+ if (_buffer.length() == 0)
+ {
+ _content = null;
+ }
+ }
+
+ // add header if needed
+ if (_buffer != null)
+ {
+
+ int payloadSize = _buffer.length();
+
+ // 4 bytes for the ajp header
+ // 1 byte for response type
+ // 2 bytes for the response size
+ // 1 byte because we count from zero??
+
+ if (payloadSize > 0)
+ {
+ _bufferPrepared = true;
+
+ _buffer.put((byte) 0);
+ int put = _buffer.putIndex();
+ _buffer.setGetIndex(0);
+ _buffer.setPutIndex(0);
+ _buffer.put((byte) 'A');
+ _buffer.put((byte) 'B');
+ addInt(payloadSize + 4);
+ _buffer.put((byte) 3);
+ addInt(payloadSize);
+ _buffer.setPutIndex(put);
+ }
+ }
+
+ if (_needMore)
+ {
+
+ if (_header == null)
+ {
+ _header = _buffers.getBuffer(_headerBufferSize);
+ }
+
+ if (_buffer == null && _header != null && _header.space() >= AJP13_MORE_CONTENT.length)
+ {
+ _header.put(AJP13_MORE_CONTENT);
+ _needMore = false;
+ }
+ else if (_buffer != null && _buffer.space() >= AJP13_MORE_CONTENT.length)
+ {
+ // send closing packet if all contents
+ // are added
+ _buffer.put(AJP13_MORE_CONTENT);
+ _needMore = false;
+ _bufferPrepared = true;
+ }
+
+ }
+
+ if (!_expectMore && _needEOC)
+ {
+ if (_buffer == null && _header.space() >= AJP13_END_RESPONSE.length)
+ {
+
+ _header.put(AJP13_END_RESPONSE);
+ _needEOC = false;
+ }
+ else if (_buffer != null && _buffer.space() >= AJP13_END_RESPONSE.length)
+ {
+ // send closing packet if all contents
+ // are added
+
+ _buffer.put(AJP13_END_RESPONSE);
+ _needEOC = false;
+ _bufferPrepared = true;
+ }
+ }
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ public boolean isComplete()
+ {
+ return !_expectMore && _state == STATE_END;
+ }
+
+ /* ------------------------------------------------------------ */
+ private void initContent() throws IOException
+ {
+ if (_buffer == null)
+ {
+ _buffer = _buffers.getBuffer(_contentBufferSize);
+ _buffer.setPutIndex(7);
+ _buffer.setGetIndex(7);
+ }
+ }
+
+ /* ------------------------------------------------------------ */
+ private void addInt(int i)
+ {
+ _buffer.put((byte) ((i >> 8) & 0xFF));
+ _buffer.put((byte) (i & 0xFF));
+ }
+
+ /* ------------------------------------------------------------ */
+ private void addInt(int startIndex, int i)
+ {
+ _buffer.poke(startIndex, (byte) ((i >> 8) & 0xFF));
+ _buffer.poke((startIndex + 1), (byte) (i & 0xFF));
+ }
+
+ /* ------------------------------------------------------------ */
+ private void addString(String str)
+ {
+ if (str == null)
+ {
+ addInt(0xFFFF);
+ return;
+ }
+
+ // TODO - need to use a writer to convert, to avoid this hacky
+ // conversion and temp buffer
+ byte[] b = str.getBytes();
+
+ addInt(b.length);
+
+ _buffer.put(b);
+ _buffer.put((byte) 0);
+ }
+
+ /* ------------------------------------------------------------ */
+ private void addBuffer(Buffer b)
+ {
+ if (b == null)
+ {
+ addInt(0xFFFF);
+ return;
+ }
+
+ addInt(b.length());
+ _buffer.put(b);
+ _buffer.put((byte) 0);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void getBodyChunk() throws IOException
+ {
+ _needMore = true;
+ _expectMore = true;
+ flushBuffer();
+ }
+
+ /* ------------------------------------------------------------ */
+ public void gotBody()
+ {
+ _needMore = false;
+ _expectMore = false;
+ }
+
+
+ /* ------------------------------------------------------------ */
+ public void sendCPong() throws IOException
+ {
+
+ Buffer buff = _buffers.getBuffer(AJP13_CPONG_RESPONSE.length);
+ buff.put(AJP13_CPONG_RESPONSE);
+
+ // flushing cpong response
+ do
+ {
+ _endp.flush(buff);
+
+ }
+ while(buff.length() >0);
+ _buffers.returnBuffer(buff);
+
+ reset(true);
+
+ }
+
+
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Packet.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Packet.java
new file mode 100644
index 0000000000..cfaca11777
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Packet.java
@@ -0,0 +1,63 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.io.BufferCache;
+
+/**
+ *
+ */
+public class Ajp13Packet
+{
+
+ public final static int MAX_PACKET_SIZE=(8*1024);
+ public final static int HDR_SIZE=4;
+
+ // Used in writing response...
+ public final static int DATA_HDR_SIZE=7;
+ public final static int MAX_DATA_SIZE=MAX_PACKET_SIZE-DATA_HDR_SIZE;
+
+ public final static String
+ // Server -> Container
+ FORWARD_REQUEST="FORWARD REQUEST",
+ SHUTDOWN="SHUTDOWN",
+ PING_REQUEST="PING REQUEST", // Obsolete
+ CPING_REQUEST="CPING REQUEST",
+
+ // Server <- Container
+ SEND_BODY_CHUNK="SEND BODY CHUNK", SEND_HEADERS="SEND HEADERS", END_RESPONSE="END RESPONSE",
+ GET_BODY_CHUNK="GET BODY CHUNK",
+ CPONG_REPLY="CPONG REPLY";
+
+ public final static int FORWARD_REQUEST_ORDINAL=2, SHUTDOWN_ORDINAL=7,
+ PING_REQUEST_ORDINAL=8, // Obsolete
+ CPING_REQUEST_ORDINAL=10, SEND_BODY_CHUNK_ORDINAL=3, SEND_HEADERS_ORDINAL=4, END_RESPONSE_ORDINAL=5, GET_BODY_CHUNK_ORDINAL=6,
+ CPONG_REPLY_ORDINAL=9;
+
+ public final static BufferCache CACHE=new BufferCache();
+
+ static
+ {
+ CACHE.add(FORWARD_REQUEST,FORWARD_REQUEST_ORDINAL);
+ CACHE.add(SHUTDOWN,SHUTDOWN_ORDINAL);
+ CACHE.add(PING_REQUEST,PING_REQUEST_ORDINAL); // Obsolete
+ CACHE.add(CPING_REQUEST,CPING_REQUEST_ORDINAL);
+ CACHE.add(SEND_BODY_CHUNK,SEND_BODY_CHUNK_ORDINAL);
+ CACHE.add(SEND_HEADERS,SEND_HEADERS_ORDINAL);
+ CACHE.add(END_RESPONSE,END_RESPONSE_ORDINAL);
+ CACHE.add(GET_BODY_CHUNK,GET_BODY_CHUNK_ORDINAL);
+ CACHE.add(CPONG_REPLY,CPONG_REPLY_ORDINAL);
+ }
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13PacketMethods.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13PacketMethods.java
new file mode 100644
index 0000000000..8e06464486
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13PacketMethods.java
@@ -0,0 +1,69 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.BufferCache;
+
+/**
+ *
+ */
+public class Ajp13PacketMethods
+{
+
+ // TODO - this can probably be replaced by HttpMethods or at least an
+ // extension of it.
+ // It is probably most efficient if "GET" ends up as the same instance
+
+ public final static String OPTIONS="OPTIONS", GET="GET", HEAD="HEAD", POST="POST", PUT="PUT", DELETE="DELETE", TRACE="TRACE", PROPFIND="PROPFIND",
+ PROPPATCH="PROPPATCH", MKCOL="MKCOL", COPY="COPY", MOVE="MOVE", LOCK="LOCK", UNLOCK="UNLOCK", ACL="ACL", REPORT="REPORT",
+ VERSION_CONTROL="VERSION-CONTROL", CHECKIN="CHECKIN", CHECKOUT="CHECKOUT", UNCHCKOUT="UNCHECKOUT", SEARCH="SEARCH", MKWORKSPACE="MKWORKSPACE",
+ UPDATE="UPDATE", LABEL="LABEL", MERGE="MERGE", BASELINE_CONTROL="BASELINE-CONTROL", MKACTIVITY="MKACTIVITY";
+
+ public final static int OPTIONS_ORDINAL=1, GET_ORDINAL=2, HEAD_ORDINAL=3, POST__ORDINAL=4, PUT_ORDINAL=5, DELETE_ORDINAL=6, TRACE_ORDINAL=7,
+ PROPFIND_ORDINAL=8, PROPPATCH_ORDINAL=9, MKCOL_ORDINAL=10, COPY_ORDINAL=11, MOVE_ORDINAL=12, LOCK_ORDINAL=13, UNLOCK_ORDINAL=14, ACL_ORDINAL=15,
+ REPORT_ORDINAL=16, VERSION_CONTROL_ORDINAL=17, CHECKIN_ORDINAL=18, CHECKOUT_ORDINAL=19, UNCHCKOUT_ORDINAL=20, SEARCH_ORDINAL=21,
+ MKWORKSPACE_ORDINAL=22, UPDATE_ORDINAL=23, LABEL_ORDINAL=24, MERGE_ORDINAL=25, BASELINE_CONTROL_ORDINAL=26, MKACTIVITY_ORDINAL=27;
+
+ public final static BufferCache CACHE=new BufferCache();
+
+ public final static Buffer
+ OPTIONS_BUFFER=CACHE.add(OPTIONS,OPTIONS_ORDINAL),
+ GET_BUFFER=CACHE.add(GET,GET_ORDINAL),
+ HEAD_BUFFER=CACHE.add(HEAD, HEAD_ORDINAL),
+ POST__BUFFER=CACHE.add(POST,POST__ORDINAL),
+ PUT_BUFFER=CACHE.add(PUT,PUT_ORDINAL),
+ DELETE_BUFFER=CACHE.add(DELETE,DELETE_ORDINAL),
+ TRACE_BUFFER=CACHE.add(TRACE,TRACE_ORDINAL),
+ PROPFIND_BUFFER=CACHE.add(PROPFIND,PROPFIND_ORDINAL),
+ PROPPATCH_BUFFER=CACHE.add(PROPPATCH, PROPPATCH_ORDINAL),
+ MKCOL_BUFFER=CACHE.add(MKCOL,MKCOL_ORDINAL),
+ COPY_BUFFER=CACHE.add(COPY,COPY_ORDINAL),
+ MOVE_BUFFER=CACHE.add(MOVE,MOVE_ORDINAL),
+ LOCK_BUFFER=CACHE.add(LOCK,LOCK_ORDINAL),
+ UNLOCK_BUFFER=CACHE.add(UNLOCK,UNLOCK_ORDINAL),
+ ACL_BUFFER=CACHE.add(ACL,ACL_ORDINAL),
+ REPORT_BUFFER=CACHE.add(REPORT,REPORT_ORDINAL),
+ VERSION_CONTROL_BUFFER=CACHE.add(VERSION_CONTROL,VERSION_CONTROL_ORDINAL),
+ CHECKIN_BUFFER=CACHE.add(CHECKIN,CHECKIN_ORDINAL),
+ CHECKOUT_BUFFER=CACHE.add(CHECKOUT,CHECKOUT_ORDINAL),
+ UNCHCKOUT_BUFFER=CACHE.add(UNCHCKOUT,UNCHCKOUT_ORDINAL),
+ SEARCH_BUFFER=CACHE.add(SEARCH,SEARCH_ORDINAL),
+ MKWORKSPACE_BUFFER=CACHE.add(MKWORKSPACE,MKWORKSPACE_ORDINAL),
+ UPDATE_BUFFER=CACHE.add(UPDATE,UPDATE_ORDINAL),
+ LABEL_BUFFER=CACHE.add(LABEL,LABEL_ORDINAL),
+ MERGE_BUFFER=CACHE.add(MERGE,MERGE_ORDINAL),
+ BASELINE_CONTROL_BUFFER=CACHE.add(BASELINE_CONTROL,BASELINE_CONTROL_ORDINAL),
+ MKACTIVITY_BUFFER=CACHE.add(MKACTIVITY,MKACTIVITY_ORDINAL);
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Parser.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Parser.java
new file mode 100644
index 0000000000..81ade2c722
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Parser.java
@@ -0,0 +1,876 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+
+import javax.servlet.ServletInputStream;
+
+import org.eclipse.jetty.http.HttpTokens;
+import org.eclipse.jetty.http.Parser;
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.BufferUtil;
+import org.eclipse.jetty.io.Buffers;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.EofException;
+import org.eclipse.jetty.io.View;
+import org.eclipse.jetty.util.log.Log;
+
+/**
+ *
+ */
+public class Ajp13Parser implements Parser
+{
+ private final static int STATE_START = -1;
+ private final static int STATE_END = 0;
+ private final static int STATE_AJP13CHUNK_START = 1;
+ private final static int STATE_AJP13CHUNK = 2;
+
+ private int _state = STATE_START;
+ private long _contentLength;
+ private long _contentPosition;
+ private int _chunkLength;
+ private int _chunkPosition;
+ private int _headers;
+ private Buffers _buffers;
+ private EndPoint _endp;
+ private Buffer _buffer;
+ private Buffer _header; // Buffer for header data (and small _content)
+ private Buffer _body; // Buffer for large content
+ private View _contentView = new View();
+ private EventHandler _handler;
+ private Ajp13Generator _generator;
+ private View _tok0; // Saved token: header name, request method or response version
+ private View _tok1; // Saved token: header value, request URI orresponse code
+ protected int _length;
+ protected int _packetLength;
+
+
+ /* ------------------------------------------------------------------------------- */
+ public Ajp13Parser(Buffers buffers, EndPoint endPoint)
+ {
+ _buffers = buffers;
+ _endp = endPoint;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public void setEventHandler(EventHandler handler)
+ {
+ _handler=handler;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public void setGenerator(Ajp13Generator generator)
+ {
+ _generator=generator;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public long getContentLength()
+ {
+ return _contentLength;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public int getState()
+ {
+ return _state;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean inContentState()
+ {
+ return _state > 0;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean inHeaderState()
+ {
+ return _state < 0;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean isIdle()
+ {
+ return _state == STATE_START;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean isComplete()
+ {
+ return _state == STATE_END;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean isMoreInBuffer()
+ {
+
+ if (_header != null && _header.hasContent() || _body != null && _body.hasContent())
+ return true;
+
+ return false;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public boolean isState(int state)
+ {
+ return _state == state;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public void parse() throws IOException
+ {
+ if (_state == STATE_END)
+ reset(false);
+ if (_state != STATE_START)
+ throw new IllegalStateException("!START");
+
+ // continue parsing
+ while (!isComplete())
+ {
+ parseNext();
+ }
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public long parseAvailable() throws IOException
+ {
+ long len = parseNext();
+ long total = len > 0 ? len : 0;
+
+ // continue parsing
+ while (!isComplete() && _buffer != null && _buffer.length() > 0)
+ {
+ len = parseNext();
+ if (len > 0)
+ total += len;
+ else
+ break;
+ }
+ return total;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ private int fill() throws IOException
+ {
+ int filled = -1;
+ if (_body != null && _buffer != _body)
+ {
+ // mod_jk implementations may have some partial data from header
+ // check if there are partial contents in the header
+ // copy it to the body if there are any
+ if(_header.length() > 0)
+ {
+ // copy the patial data from the header to the body
+ _body.put(_header);
+ }
+
+ _buffer = _body;
+
+ if (_buffer.length()>0)
+ {
+ filled = _buffer.length();
+ return filled;
+ }
+ }
+
+ if (_buffer.markIndex() == 0 && _buffer.putIndex() == _buffer.capacity())
+ throw new IOException("FULL");
+ if (_endp != null && filled <= 0)
+ {
+ // Compress buffer if handling _content buffer
+ // TODO check this is not moving data too much
+ if (_buffer == _body)
+ _buffer.compact();
+
+ if (_buffer.space() == 0)
+ throw new IOException("FULL");
+
+ try
+ {
+ filled = _endp.fill(_buffer);
+ }
+ catch (IOException e)
+ {
+ // This is normal in AJP since the socket closes on timeout only
+ Log.debug(e);
+ reset(true);
+ throw (e instanceof EofException) ? e : new EofException(e);
+ }
+ }
+
+ if (filled < 0)
+ {
+ if (_state > STATE_END)
+ {
+ _state = STATE_END;
+ _handler.messageComplete(_contentPosition);
+ return filled;
+ }
+ reset(true);
+ throw new EofException();
+ }
+
+ return filled;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public long parseNext() throws IOException
+ {
+ long total_filled = -1;
+
+ if (_buffer == null)
+ {
+ if (_header == null)
+ {
+ _header = _buffers.getBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ _header.clear();
+ }
+ _buffer = _header;
+ _tok0 = new View(_header);
+ _tok1 = new View(_header);
+ _tok0.setPutIndex(_tok0.getIndex());
+ _tok1.setPutIndex(_tok1.getIndex());
+ }
+
+ if (_state == STATE_END)
+ throw new IllegalStateException("STATE_END");
+ if (_state > STATE_END && _contentPosition == _contentLength)
+ {
+ _state = STATE_END;
+ _handler.messageComplete(_contentPosition);
+ return total_filled;
+ }
+
+ if (_state < 0)
+ {
+ // have we seen a packet?
+ if (_packetLength<=0)
+ {
+ if (_buffer.length()<4)
+ {
+ if (total_filled<0)
+ total_filled=0;
+ total_filled+=fill();
+ if (_buffer.length()<4)
+ return total_filled;
+ }
+
+ _contentLength = HttpTokens.UNKNOWN_CONTENT;
+ int _magic = Ajp13RequestPacket.getInt(_buffer);
+ if (_magic != Ajp13RequestHeaders.MAGIC)
+ throw new IOException("Bad AJP13 rcv packet: " + "0x" + Integer.toHexString(_magic) + " expected " + "0x" + Integer.toHexString(Ajp13RequestHeaders.MAGIC) + " " + this);
+
+
+ _packetLength = Ajp13RequestPacket.getInt(_buffer);
+ if (_packetLength > Ajp13Packet.MAX_PACKET_SIZE)
+ throw new IOException("AJP13 packet (" + _packetLength + "bytes) too large for buffer");
+
+ }
+
+ if (_buffer.length() < _packetLength)
+ {
+ if (total_filled<0)
+ total_filled=0;
+ total_filled+=fill();
+ if (_buffer.length() < _packetLength)
+ return total_filled;
+ }
+
+ // Parse Header
+ Buffer bufHeaderName = null;
+ Buffer bufHeaderValue = null;
+ int attr_type = 0;
+
+ byte packetType = Ajp13RequestPacket.getByte(_buffer);
+
+ switch (packetType)
+ {
+ case Ajp13Packet.FORWARD_REQUEST_ORDINAL:
+ _handler.startForwardRequest();
+ break;
+ case Ajp13Packet.CPING_REQUEST_ORDINAL:
+ ((Ajp13Generator) _generator).sendCPong();
+
+ if(_header != null)
+ {
+ _buffers.returnBuffer(_header);
+ _header = null;
+ }
+
+ if(_body != null)
+ {
+ _buffers.returnBuffer(_body);
+ _body = null;
+ }
+
+ _buffer= null;
+
+ reset(true);
+
+ return -1;
+ case Ajp13Packet.SHUTDOWN_ORDINAL:
+ shutdownRequest();
+
+ return -1;
+
+ default:
+ // XXX Throw an Exception here?? Close
+ // connection!
+ Log.warn("AJP13 message type ({PING}: "+packetType+" ) not supported/recognized as an AJP request");
+ throw new IllegalStateException("PING is not implemented");
+ }
+
+
+ _handler.parsedMethod(Ajp13RequestPacket.getMethod(_buffer));
+ _handler.parsedProtocol(Ajp13RequestPacket.getString(_buffer, _tok0));
+ _handler.parsedUri(Ajp13RequestPacket.getString(_buffer, _tok1));
+ _handler.parsedRemoteAddr(Ajp13RequestPacket.getString(_buffer, _tok1));
+ _handler.parsedRemoteHost(Ajp13RequestPacket.getString(_buffer, _tok1));
+ _handler.parsedServerName(Ajp13RequestPacket.getString(_buffer, _tok1));
+ _handler.parsedServerPort(Ajp13RequestPacket.getInt(_buffer));
+ _handler.parsedSslSecure(Ajp13RequestPacket.getBool(_buffer));
+
+
+ _headers = Ajp13RequestPacket.getInt(_buffer);
+
+ for (int h=0;h<_headers;h++)
+ {
+ bufHeaderName = Ajp13RequestPacket.getHeaderName(_buffer, _tok0);
+ bufHeaderValue = Ajp13RequestPacket.getString(_buffer, _tok1);
+
+ if (bufHeaderName != null && bufHeaderName.toString().equals(Ajp13RequestHeaders.CONTENT_LENGTH))
+ {
+ _contentLength = BufferUtil.toLong(bufHeaderValue);
+ if (_contentLength == 0)
+ _contentLength = HttpTokens.NO_CONTENT;
+ }
+
+ _handler.parsedHeader(bufHeaderName, bufHeaderValue);
+ }
+
+
+
+ attr_type = Ajp13RequestPacket.getByte(_buffer) & 0xff;
+ while (attr_type != 0xFF)
+ {
+
+ switch (attr_type)
+ {
+ // XXX How does this plug into the web
+ // containers
+ // authentication?
+
+ case Ajp13RequestHeaders.REMOTE_USER_ATTR:
+ _handler.parsedRemoteUser(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+ case Ajp13RequestHeaders.AUTH_TYPE_ATTR:
+ //XXX JASPI how does this make sense?
+ _handler.parsedAuthorizationType(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ case Ajp13RequestHeaders.QUERY_STRING_ATTR:
+ _handler.parsedQueryString(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ case Ajp13RequestHeaders.JVM_ROUTE_ATTR:
+ // XXX Using old Jetty 5 key,
+ // should change!
+ // Note used in
+ // org.eclipse.jetty.servlet.HashSessionIdManager
+ _handler.parsedRequestAttribute("org.eclipse.http.ajp.JVMRoute", Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ case Ajp13RequestHeaders.SSL_CERT_ATTR:
+ _handler.parsedSslCert(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ case Ajp13RequestHeaders.SSL_CIPHER_ATTR:
+ _handler.parsedSslCipher(Ajp13RequestPacket.getString(_buffer, _tok1));
+ // SslSocketConnector.customize()
+ break;
+
+ case Ajp13RequestHeaders.SSL_SESSION_ATTR:
+ _handler.parsedSslSession(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ case Ajp13RequestHeaders.REQUEST_ATTR:
+ _handler.parsedRequestAttribute(Ajp13RequestPacket.getString(_buffer, _tok0).toString(), Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+
+ // New Jk API?
+ // Check if experimental or can they
+ // assumed to be
+ // supported
+
+ case Ajp13RequestHeaders.SSL_KEYSIZE_ATTR:
+
+ // This has been implemented in AJP13 as either a string or a integer.
+ // Servlet specs say javax.servlet.request.key_size must be an Integer
+
+ // Does it look like a string containing digits?
+ int length = Ajp13RequestPacket.getInt(_buffer);
+
+ if (length>0 && length<16)
+ {
+ // this must be a string length rather than a key length
+ _buffer.skip(-2);
+ _handler.parsedSslKeySize(Integer.parseInt(Ajp13RequestPacket.getString(_buffer, _tok1).toString()));
+ }
+ else
+ _handler.parsedSslKeySize(length);
+
+ break;
+
+
+ // Used to lock down jk requests with a
+ // secreate
+ // key.
+
+ case Ajp13RequestHeaders.SECRET_ATTR:
+ // XXX Investigate safest way to
+ // deal with
+ // this...
+ // should this tie into shutdown
+ // packet?
+ break;
+
+ case Ajp13RequestHeaders.STORED_METHOD_ATTR:
+ // XXX Confirm this should
+ // really overide
+ // previously parsed method?
+ // _handler.parsedMethod(Ajp13PacketMethods.CACHE.get(Ajp13RequestPacket.getString()));
+ break;
+
+
+ case Ajp13RequestHeaders.CONTEXT_ATTR:
+ _handler.parsedContextPath(Ajp13RequestPacket.getString(_buffer, _tok1));
+ break;
+ case Ajp13RequestHeaders.SERVLET_PATH_ATTR:
+ _handler.parsedServletPath(Ajp13RequestPacket.getString(_buffer, _tok1));
+
+ break;
+ default:
+ Log.warn("Unsupported Ajp13 Request Attribute {}", new Integer(attr_type));
+ break;
+ }
+
+ attr_type = Ajp13RequestPacket.getByte(_buffer) & 0xff;
+ }
+
+
+
+
+
+
+ _contentPosition = 0;
+ switch ((int) _contentLength)
+ {
+
+ case HttpTokens.NO_CONTENT:
+ _state = STATE_END;
+ _handler.headerComplete();
+ _handler.messageComplete(_contentPosition);
+
+ break;
+
+ case HttpTokens.UNKNOWN_CONTENT:
+
+ _generator.getBodyChunk();
+ if (_buffers != null && _body == null && _buffer == _header && _header.length() <= 0)
+ {
+ _body = _buffers.getBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ _body.clear();
+ }
+ _state = STATE_AJP13CHUNK_START;
+ _handler.headerComplete(); // May recurse here!
+
+ return total_filled;
+
+ default:
+
+ if (_buffers != null && _body == null && _buffer == _header && _contentLength > (_header.capacity() - _header.getIndex()))
+ {
+ _body = _buffers.getBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ _body.clear();
+
+ }
+ _state = STATE_AJP13CHUNK_START;
+ _handler.headerComplete(); // May recurse here!
+ return total_filled;
+ }
+ }
+
+
+ Buffer chunk;
+
+ while (_state>STATE_END)
+ {
+ switch (_state)
+ {
+ case STATE_AJP13CHUNK_START:
+ if (_buffer.length()<6)
+ {
+ if (total_filled<0)
+ total_filled=0;
+ total_filled+=fill();
+ if (_buffer.length()<6)
+ return total_filled;
+ }
+ int _magic=Ajp13RequestPacket.getInt(_buffer);
+ if (_magic!=Ajp13RequestHeaders.MAGIC)
+ {
+ throw new IOException("Bad AJP13 rcv packet: "+"0x"+Integer.toHexString(_magic)+" expected "+"0x"
+ +Integer.toHexString(Ajp13RequestHeaders.MAGIC)+" "+this);
+ }
+ _chunkPosition=0;
+ _chunkLength=Ajp13RequestPacket.getInt(_buffer)-2;
+ Ajp13RequestPacket.getInt(_buffer);
+ if (_chunkLength==0)
+ {
+ _state=STATE_END;
+ _generator.gotBody();
+ _handler.messageComplete(_contentPosition);
+ return total_filled;
+ }
+ _state=STATE_AJP13CHUNK;
+
+ case STATE_AJP13CHUNK:
+ if (_buffer.length()<_chunkLength)
+ {
+ if (total_filled<0)
+ total_filled=0;
+ total_filled+=fill();
+ if (_buffer.length()<_chunkLength)
+ return total_filled;
+ }
+
+ int remaining=_chunkLength-_chunkPosition;
+
+ if (remaining==0)
+ {
+ _state=STATE_AJP13CHUNK_START;
+ if (_contentPosition<_contentLength)
+ {
+ _generator.getBodyChunk();
+ }
+ else
+ {
+ _generator.gotBody();
+ }
+
+ return total_filled;
+ }
+
+ if (_buffer.length()<remaining)
+ {
+ remaining=_buffer.length();
+ }
+
+ chunk=Ajp13RequestPacket.get(_buffer,(int)remaining);
+ _contentPosition+=chunk.length();
+ _chunkPosition+=chunk.length();
+ _contentView.update(chunk);
+
+ remaining=_chunkLength-_chunkPosition;
+
+ if (remaining==0)
+ {
+ _state=STATE_AJP13CHUNK_START;
+ if (_contentPosition<_contentLength || _contentLength == HttpTokens.UNKNOWN_CONTENT)
+ {
+ _generator.getBodyChunk();
+ }
+ else
+ {
+ _generator.gotBody();
+ }
+ }
+
+ _handler.content(chunk);
+
+ return total_filled;
+
+ default:
+ throw new IllegalStateException("Invalid Content State");
+
+ }
+
+ }
+
+ return total_filled;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public void reset(boolean returnBuffers)
+ {
+ _state = STATE_START;
+ _contentLength = HttpTokens.UNKNOWN_CONTENT;
+ _contentPosition = 0;
+ _length = 0;
+ _packetLength = 0;
+
+ if (_body != null)
+ {
+ if (_body.hasContent())
+ {
+ _header.setMarkIndex(-1);
+ _header.compact();
+ // TODO if pipelined requests received after big
+ // input - maybe this is not good?.
+ _body.skip(_header.put(_body));
+
+ }
+
+ if (_body.length() == 0)
+ {
+ if (_buffers != null && returnBuffers)
+ _buffers.returnBuffer(_body);
+ _body = null;
+ }
+ else
+ {
+ _body.setMarkIndex(-1);
+ _body.compact();
+ }
+ }
+
+ if (_header != null)
+ {
+ _header.setMarkIndex(-1);
+ if (!_header.hasContent() && _buffers != null && returnBuffers)
+ {
+ _buffers.returnBuffer(_header);
+ _header = null;
+ _buffer = null;
+ }
+ else
+ {
+ _header.compact();
+ _tok0.update(_header);
+ _tok0.update(0, 0);
+ _tok1.update(_header);
+ _tok1.update(0, 0);
+ }
+ }
+
+ _buffer = _header;
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ Buffer getHeaderBuffer()
+ {
+ return _buffer;
+ }
+
+ private void shutdownRequest()
+ {
+ _state = STATE_END;
+
+ if(!Ajp13SocketConnector.__allowShutdown)
+ {
+ Log.warn("AJP13: Shutdown Request is Denied, allowShutdown is set to false!!!");
+ return;
+ }
+
+ if(Ajp13SocketConnector.__secretWord != null)
+ {
+ Log.warn("AJP13: Validating Secret Word");
+ try
+ {
+ String secretWord = Ajp13RequestPacket.getString(_buffer, _tok1).toString();
+
+ if(!Ajp13SocketConnector.__secretWord.equals(secretWord))
+ {
+ Log.warn("AJP13: Shutdown Request Denied, Invalid Sercret word!!!");
+ throw new IllegalStateException("AJP13: Secret Word is Invalid: Peer has requested shutdown but, Secret Word did not match");
+ }
+ }
+ catch (Exception e)
+ {
+ Log.warn("AJP13: Secret Word is Required!!!");
+ Log.debug(e);
+ throw new IllegalStateException("AJP13: Secret Word is Required: Peer has requested shutdown but, has not provided a Secret Word");
+ }
+
+
+ Log.warn("AJP13: Shutdown Request is Denied, allowShutdown is set to false!!!");
+ return;
+ }
+
+ Log.warn("AJP13: Peer Has Requested for Shutdown!!!");
+ Log.warn("AJP13: Jetty 6 is shutting down !!!");
+ System.exit(0);
+ }
+
+ /* ------------------------------------------------------------------------------- */
+ public interface EventHandler
+ {
+
+ // public void shutdownRequest() throws IOException;
+ // public void cpingRequest() throws IOException;
+
+ public void content(Buffer ref) throws IOException;
+
+ public void headerComplete() throws IOException;
+
+ public void messageComplete(long contextLength) throws IOException;
+
+ public void parsedHeader(Buffer name, Buffer value) throws IOException;
+
+ public void parsedMethod(Buffer method) throws IOException;
+
+ public void parsedProtocol(Buffer protocol) throws IOException;
+
+ public void parsedQueryString(Buffer value) throws IOException;
+
+ public void parsedRemoteAddr(Buffer addr) throws IOException;
+
+ public void parsedRemoteHost(Buffer host) throws IOException;
+
+ public void parsedRequestAttribute(String key, Buffer value) throws IOException;
+
+ public void parsedRequestAttribute(String key, int value) throws IOException;
+
+ public void parsedServerName(Buffer name) throws IOException;
+
+ public void parsedServerPort(int port) throws IOException;
+
+ public void parsedSslSecure(boolean secure) throws IOException;
+
+ public void parsedUri(Buffer uri) throws IOException;
+
+ public void startForwardRequest() throws IOException;
+
+ public void parsedAuthorizationType(Buffer authType) throws IOException;
+
+ public void parsedRemoteUser(Buffer remoteUser) throws IOException;
+
+ public void parsedServletPath(Buffer servletPath) throws IOException;
+
+ public void parsedContextPath(Buffer context) throws IOException;
+
+ public void parsedSslCert(Buffer sslCert) throws IOException;
+
+ public void parsedSslCipher(Buffer sslCipher) throws IOException;
+
+ public void parsedSslSession(Buffer sslSession) throws IOException;
+
+ public void parsedSslKeySize(int keySize) throws IOException;
+
+
+
+
+
+ }
+
+ /* ------------------------------------------------------------ */
+ /**
+ * TODO Make this common with HttpParser
+ *
+ */
+ public static class Input extends ServletInputStream
+ {
+ private Ajp13Parser _parser;
+ private EndPoint _endp;
+ private long _maxIdleTime;
+ private View _content;
+
+ /* ------------------------------------------------------------ */
+ public Input(Ajp13Parser parser, long maxIdleTime)
+ {
+ _parser = parser;
+ _endp = parser._endp;
+ _maxIdleTime = maxIdleTime;
+ _content = _parser._contentView;
+ }
+
+ /* ------------------------------------------------------------ */
+ public int read() throws IOException
+ {
+ int c = -1;
+ if (blockForContent())
+ c = 0xff & _content.get();
+ return c;
+ }
+
+ /* ------------------------------------------------------------ */
+ /*
+ * @see java.io.InputStream#read(byte[], int, int)
+ */
+ public int read(byte[] b, int off, int len) throws IOException
+ {
+ int l = -1;
+ if (blockForContent())
+ l = _content.get(b, off, len);
+ return l;
+ }
+
+ /* ------------------------------------------------------------ */
+ private boolean blockForContent() throws IOException
+ {
+ if (_content.length() > 0)
+ return true;
+ if (_parser.isState(Ajp13Parser.STATE_END))
+ return false;
+
+ // Handle simple end points.
+ if (_endp == null)
+ _parser.parseNext();
+
+ // Handle blocking end points
+ else if (_endp.isBlocking())
+ {
+ _parser.parseNext();
+
+ // parse until some progress is made (or IOException thrown for timeout)
+ while (_content.length() == 0 && !_parser.isState(Ajp13Parser.STATE_END))
+ {
+ // Try to get more _parser._content
+ _parser.parseNext();
+ }
+ }
+ else // Handle non-blocking end point
+ {
+ long filled = _parser.parseNext();
+ boolean blocked = false;
+
+ // parse until some progress is made (or
+ // IOException thrown for timeout)
+ while (_content.length() == 0 && !_parser.isState(Ajp13Parser.STATE_END))
+ {
+ // if fill called, but no bytes read,
+ // then block
+ if (filled > 0)
+ blocked = false;
+ else if (filled == 0)
+ {
+ if (blocked)
+ throw new InterruptedIOException("timeout");
+
+ blocked = true;
+ _endp.blockReadable(_maxIdleTime);
+ }
+
+ // Try to get more _parser._content
+ filled = _parser.parseNext();
+ }
+ }
+
+ return _content.length() > 0;
+ }
+
+ }
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Request.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Request.java
new file mode 100644
index 0000000000..d1ae515f6f
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13Request.java
@@ -0,0 +1,113 @@
+// ========================================================================
+// Copyright (c) 2004-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
+
+public class Ajp13Request extends Request
+{
+ protected String _remoteAddr;
+ protected String _remoteHost;
+ protected String _remoteUser;
+ protected boolean _sslSecure;
+
+ /* ------------------------------------------------------------ */
+ public Ajp13Request(HttpConnection connection)
+ {
+ super(connection);
+ }
+
+ /* ------------------------------------------------------------ */
+ public Ajp13Request()
+ {
+ }
+
+ /* ------------------------------------------------------------ */
+ void setConnection(Ajp13Connection connection)
+ {
+ super.setConnection(connection);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setRemoteUser(String remoteUser)
+ {
+ _remoteUser = remoteUser;
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getRemoteUser()
+ {
+ if(_remoteUser != null)
+ return _remoteUser;
+ return super.getRemoteUser();
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getRemoteAddr()
+ {
+ if (_remoteAddr != null)
+ return _remoteAddr;
+ if (_remoteHost != null)
+ return _remoteHost;
+ return super.getRemoteAddr();
+ }
+
+
+
+ /* ------------------------------------------------------------ */
+ public void setRemoteAddr(String remoteAddr)
+ {
+ _remoteAddr = remoteAddr;
+ }
+
+ /* ------------------------------------------------------------ */
+ public String getRemoteHost()
+ {
+ if (_remoteHost != null)
+ return _remoteHost;
+ if (_remoteAddr != null)
+ return _remoteAddr;
+ return super.getRemoteHost();
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setRemoteHost(String remoteHost)
+ {
+ _remoteHost = remoteHost;
+ }
+
+ /* ------------------------------------------------------------ */
+ public boolean isSslSecure()
+ {
+ return _sslSecure;
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setSslSecure(boolean sslSecure)
+ {
+ _sslSecure = sslSecure;
+ }
+
+ /* ------------------------------------------------------------ */
+ protected void recycle()
+ {
+ super.recycle();
+ _remoteAddr = null;
+ _remoteHost = null;
+ _remoteUser = null;
+ _sslSecure = false;
+ }
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestHeaders.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestHeaders.java
new file mode 100644
index 0000000000..55d3d92668
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestHeaders.java
@@ -0,0 +1,62 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.BufferCache;
+
+/**
+ * XXX Should this implement the Buffer interface?
+ *
+ *
+ */
+public class Ajp13RequestHeaders extends BufferCache
+{
+
+ public final static int MAGIC=0x1234;
+
+ public final static String ACCEPT="accept", ACCEPT_CHARSET="accept-charset", ACCEPT_ENCODING="accept-encoding", ACCEPT_LANGUAGE="accept-language",
+ AUTHORIZATION="authorization", CONNECTION="connection", CONTENT_TYPE="content-type", CONTENT_LENGTH="content-length", COOKIE="cookie",
+ COOKIE2="cookie2", HOST="host", PRAGMA="pragma", REFERER="referer", USER_AGENT="user-agent";
+
+ public final static int ACCEPT_ORDINAL=1, ACCEPT_CHARSET_ORDINAL=2, ACCEPT_ENCODING_ORDINAL=3, ACCEPT_LANGUAGE_ORDINAL=4, AUTHORIZATION_ORDINAL=5,
+ CONNECTION_ORDINAL=6, CONTENT_TYPE_ORDINAL=7, CONTENT_LENGTH_ORDINAL=8, COOKIE_ORDINAL=9, COOKIE2_ORDINAL=10, HOST_ORDINAL=11, PRAGMA_ORDINAL=12,
+ REFERER_ORDINAL=13, USER_AGENT_ORDINAL=14;
+
+ public final static BufferCache CACHE=new BufferCache();
+
+ public final static Buffer ACCEPT_BUFFER=CACHE.add(ACCEPT,ACCEPT_ORDINAL), ACCEPT_CHARSET_BUFFER=CACHE.add(ACCEPT_CHARSET,ACCEPT_CHARSET_ORDINAL),
+ ACCEPT_ENCODING_BUFFER=CACHE.add(ACCEPT_ENCODING,ACCEPT_ENCODING_ORDINAL), ACCEPT_LANGUAGE_BUFFER=CACHE
+ .add(ACCEPT_LANGUAGE,ACCEPT_LANGUAGE_ORDINAL), AUTHORIZATION_BUFFER=CACHE.add(AUTHORIZATION,AUTHORIZATION_ORDINAL), CONNECTION_BUFFER=CACHE
+ .add(CONNECTION,CONNECTION_ORDINAL), CONTENT_TYPE_BUFFER=CACHE.add(CONTENT_TYPE,CONTENT_TYPE_ORDINAL), CONTENT_LENGTH_BUFFER=CACHE.add(
+ CONTENT_LENGTH,CONTENT_LENGTH_ORDINAL), COOKIE_BUFFER=CACHE.add(COOKIE,COOKIE_ORDINAL), COOKIE2_BUFFER=CACHE.add(COOKIE2,COOKIE2_ORDINAL),
+ HOST_BUFFER=CACHE.add(HOST,HOST_ORDINAL), PRAGMA_BUFFER=CACHE.add(PRAGMA,PRAGMA_ORDINAL), REFERER_BUFFER=CACHE.add(REFERER,REFERER_ORDINAL),
+ USER_AGENT_BUFFER=CACHE.add(USER_AGENT,USER_AGENT_ORDINAL);
+
+ public final static byte
+ CONTEXT_ATTR=1, // Legacy
+ SERVLET_PATH_ATTR=2, // Legacy
+ REMOTE_USER_ATTR=3,
+ AUTH_TYPE_ATTR=4,
+ QUERY_STRING_ATTR=5,
+ JVM_ROUTE_ATTR=6,
+ SSL_CERT_ATTR=7,
+ SSL_CIPHER_ATTR=8,
+ SSL_SESSION_ATTR=9,
+ REQUEST_ATTR=10,
+ SSL_KEYSIZE_ATTR=11,
+ SECRET_ATTR=12,
+ STORED_METHOD_ATTR=13;
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestPacket.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestPacket.java
new file mode 100644
index 0000000000..95e4cf27c8
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13RequestPacket.java
@@ -0,0 +1,85 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.View;
+
+/**
+ *
+ *
+ *
+ */
+public class Ajp13RequestPacket
+{
+ public static boolean isEmpty(Buffer _buffer)
+ {
+ return _buffer.length()==0;
+ }
+
+ public static int getInt(Buffer _buffer)
+ {
+ return ((_buffer.get()&0xFF)<<8)|(_buffer.get()&0xFF);
+ }
+
+ public static Buffer getString(Buffer _buffer, View tok)
+ {
+ int len=((_buffer.peek()&0xFF)<<8)|(_buffer.peek(_buffer.getIndex()+1)&0xFF);
+ if (len==0xffff)
+ {
+ _buffer.skip(2);
+ return null;
+ }
+ int start=_buffer.getIndex();
+ tok.update(start+2,start+len+2);
+ _buffer.skip(len+3);
+ return tok;
+ }
+
+ public static byte getByte(Buffer _buffer)
+ {
+ return _buffer.get();
+ }
+
+ public static boolean getBool(Buffer _buffer)
+ {
+ return _buffer.get()>0;
+ }
+
+ public static Buffer getMethod(Buffer _buffer)
+ {
+ return Ajp13PacketMethods.CACHE.get(_buffer.get());
+ }
+
+ public static Buffer getHeaderName(Buffer _buffer, View tok)
+ {
+ int len=((_buffer.peek()&0xFF)<<8)|(_buffer.peek(_buffer.getIndex()+1)&0xFF);
+ if ((0xFF00&len)==0xA000)
+ {
+ _buffer.skip(1);
+ return Ajp13RequestHeaders.CACHE.get(_buffer.get());
+ }
+ int start=_buffer.getIndex();
+ tok.update(start+2,start+len+2);
+ _buffer.skip(len+3);
+ return tok;
+
+ }
+
+ public static Buffer get(Buffer buffer, int length)
+ {
+ return buffer.get(length);
+ }
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13ResponseHeaders.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13ResponseHeaders.java
new file mode 100644
index 0000000000..59030b40ba
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13ResponseHeaders.java
@@ -0,0 +1,43 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.BufferCache;
+
+/**
+ *
+ */
+public class Ajp13ResponseHeaders extends BufferCache
+{
+
+ public final static int MAGIC=0xab00;
+
+ public final static String CONTENT_TYPE="Content-Type", CONTENT_LANGUAGE="Content-Language", CONTENT_LENGTH="Content-Length", DATE="Date",
+ LAST_MODIFIED="Last-Modified", LOCATION="Location", SET_COOKIE="Set-Cookie", SET_COOKIE2="Set-Cookie2", SERVLET_ENGINE="Servlet-Engine",
+ STATUS="Status", WWW_AUTHENTICATE="WWW-Authenticate";
+
+ public final static int CONTENT_TYPE_ORDINAL=1, CONTENT_LANGUAGE_ORDINAL=2, CONTENT_LENGTH_ORDINAL=3, DATE_ORDINAL=4, LAST_MODIFIED_ORDINAL=5,
+ LOCATION_ORDINAL=6, SET_COOKIE_ORDINAL=7, SET_COOKIE2_ORDINAL=8, SERVLET_ENGINE_ORDINAL=9, STATUS_ORDINAL=10, WWW_AUTHENTICATE_ORDINAL=11;
+
+ public final static BufferCache CACHE=new BufferCache();
+
+ public final static Buffer CONTENT_TYPE_BUFFER=CACHE.add(CONTENT_TYPE,CONTENT_TYPE_ORDINAL), CONTENT_LANGUAGE_BUFFER=CACHE.add(CONTENT_LANGUAGE,
+ CONTENT_LANGUAGE_ORDINAL), CONTENT_LENGTH_BUFFER=CACHE.add(CONTENT_LENGTH,CONTENT_LENGTH_ORDINAL), DATE_BUFFER=CACHE.add(DATE,DATE_ORDINAL),
+ LAST_MODIFIED_BUFFER=CACHE.add(LAST_MODIFIED,LAST_MODIFIED_ORDINAL), LOCATION_BUFFER=CACHE.add(LOCATION,LOCATION_ORDINAL), SET_COOKIE_BUFFER=CACHE
+ .add(SET_COOKIE,SET_COOKIE_ORDINAL), SET_COOKIE2_BUFFER=CACHE.add(SET_COOKIE2,SET_COOKIE2_ORDINAL), SERVLET_ENGINE_BUFFER=CACHE.add(
+ SERVLET_ENGINE,SERVLET_ENGINE_ORDINAL), STATUS_BUFFER=CACHE.add(STATUS,STATUS_ORDINAL), WWW_AUTHENTICATE_BUFFER=CACHE.add(WWW_AUTHENTICATE,
+ WWW_AUTHENTICATE_ORDINAL);
+
+}
diff --git a/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13SocketConnector.java b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13SocketConnector.java
new file mode 100644
index 0000000000..eee96e5a49
--- /dev/null
+++ b/jetty-ajp/src/main/java/org/eclipse/jetty/ajp/Ajp13SocketConnector.java
@@ -0,0 +1,115 @@
+// ========================================================================
+// Copyright (c) 2006-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.IOException;
+
+import org.eclipse.jetty.http.HttpSchemes;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.bio.SocketConnector;
+import org.eclipse.jetty.util.log.Log;
+
+/**
+ *
+ *
+ *
+ */
+public class Ajp13SocketConnector extends SocketConnector
+{
+ static String __secretWord = null;
+ static boolean __allowShutdown = false;
+ public Ajp13SocketConnector()
+ {
+ super.setHeaderBufferSize(Ajp13Packet.MAX_DATA_SIZE);
+ super.setRequestBufferSize(Ajp13Packet.MAX_DATA_SIZE);
+ super.setResponseBufferSize(Ajp13Packet.MAX_DATA_SIZE);
+ // IN AJP protocol the socket stay open, so
+ // by default the time out is set to 900 seconds
+ super.setMaxIdleTime(900000);
+ }
+
+ protected void doStart() throws Exception
+ {
+ super.doStart();
+ Log.info("AJP13 is not a secure protocol. Please protect port {}",Integer.toString(getLocalPort()));
+ }
+
+
+
+ /* ------------------------------------------------------------ */
+ /* (non-Javadoc)
+ * @see org.eclipse.jetty.server.bio.SocketConnector#customize(org.eclipse.io.EndPoint, org.eclipse.jetty.server.Request)
+ */
+ public void customize(EndPoint endpoint, Request request) throws IOException
+ {
+ super.customize(endpoint,request);
+ if (request.isSecure())
+ request.setScheme(HttpSchemes.HTTPS);
+ }
+
+ /* ------------------------------------------------------------ */
+ protected HttpConnection newHttpConnection(EndPoint endpoint)
+ {
+ return new Ajp13Connection(this,endpoint,getServer());
+ }
+
+ /* ------------------------------------------------------------ */
+ // Secured on a packet by packet bases not by connection
+ public boolean isConfidential(Request request)
+ {
+ return ((Ajp13Request) request).isSslSecure();
+ }
+
+ /* ------------------------------------------------------------ */
+ // Secured on a packet by packet bases not by connection
+ public boolean isIntegral(Request request)
+ {
+ return ((Ajp13Request) request).isSslSecure();
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setHeaderBufferSize(int headerBufferSize)
+ {
+ Log.debug(Log.IGNORED);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setRequestBufferSize(int requestBufferSize)
+ {
+ Log.debug(Log.IGNORED);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setResponseBufferSize(int responseBufferSize)
+ {
+ Log.debug(Log.IGNORED);
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setAllowShutdown(boolean allowShutdown)
+ {
+ Log.warn("AJP13: Shutdown Request is: " + allowShutdown);
+ __allowShutdown = allowShutdown;
+ }
+
+ /* ------------------------------------------------------------ */
+ public void setSecretWord(String secretWord)
+ {
+ Log.warn("AJP13: Shutdown Request secret word is : " + secretWord);
+ __secretWord = secretWord;
+ }
+
+}
diff --git a/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/Ajp13ConnectionTest.java b/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/Ajp13ConnectionTest.java
new file mode 100644
index 0000000000..0a27086dc5
--- /dev/null
+++ b/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/Ajp13ConnectionTest.java
@@ -0,0 +1,313 @@
+// ========================================================================
+// Copyright (c) 2008-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.Socket;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.util.TypeUtil;
+
+public class Ajp13ConnectionTest extends TestCase
+{
+ private Server _server;
+ private Ajp13SocketConnector _connector;
+ private Socket _client;
+
+ protected void setUp() throws Exception
+ {
+ _server=new Server();
+ _connector=new Ajp13SocketConnector();
+
+ _connector.setPort(0);
+ _connector.setMaxIdleTime(100);
+ _server.setConnectors(new Connector[] { _connector });
+ _server.setHandler(new Handler());
+ _server.start();
+
+ _client=new Socket("localhost",_connector.getLocalPort());
+
+ }
+
+ protected void tearDown() throws Exception
+ {
+ _client.close();
+ _connector.close();
+ _server.stop();
+ }
+
+ public void testPacket1() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="123401070202000f77696474683d20485454502f312e300000122f636f6e74726f6c2f70726f647563742f2200000e3230382e32372e3230332e31323800ffff000c7777772e756c74612e636f6d000050000005a006000a6b6565702d616c69766500a00b000c7777772e756c74612e636f6d00a00e002b4d6f7a696c6c612f342e302028636f6d70617469626c653b20426f726465724d616e6167657220332e302900a0010043696d6167652f6769662c20696d6167652f782d786269746d61702c20696d6167652f6a7065672c20696d6167652f706a7065672c20696d6167652f706d672c202a2f2a00a008000130000600067570726f64310008000a4145533235362d53484100ff";
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+
+ readResponse(_client);
+ assertTrue(true);
+ }
+
+ public void testPacket2() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="1234020102020008485454502f312e3100000f2f6363632d7777777777772f61616100000c38382e3838382e38382e383830ffff00116363632e6363636363636363632e636f6d0001bb010009a00b00116363632e6363636363636363632e636f6d00a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004039324643303544413043444141443232303137413743443141453939353132413330443938363838423843433041454643364231363035323543433232353341000b0100ff";
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+
+ readResponse(_client);
+ assertTrue(true);
+ }
+
+ public void testPacket3() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="1234028f02020008485454502f312e3100000d2f666f726d746573742e6a737000000d3139322e3136382e342e31383000ffff00107777772e777265636b6167652e6f726700005000000aa0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a00200075554462d382c2a00a003000c677a69702c6465666c61746500a004000e656e2d67622c656e3b713d302e3500a006000a6b6565702d616c69766500a00900f95048505345535349443d37626361383232616638333466316465373663633630336366636435313938633b20667041757468436f6f6b69653d433035383430394537393344364245434633324230353234344242303039343230383344443645443533304230454637464137414544413745453231313538333745363033454435364332364446353531383635333335423433374531423637414641343533364345304546323342333642323133374243423932333943363631433131443330393842333938414546334546334146454344423746353842443b204a53455353494f4e49443d7365366331623864663432762e6a657474793300a00b00107777772e777265636b6167652e6f726700000a6b6565702d616c69766500000333303000a00e00654d6f7a696c6c612f352e3020285831313b20553b204c696e7578207838365f36343b20656e2d55533b2072763a312e382e302e3929204765636b6f2f3230303631323035202844656269616e2d312e382e302e392d3129204570697068616e792f322e313400a008000130000600066a657474793300ff";
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+ readResponse(_client);
+
+ assertTrue(true);
+ }
+
+ public void testSSLPacketWithIntegerKeySize() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="1234025002020008485454502f312e3100000f2f746573742f64756d702f696e666f00000e3139322e3136382e3130302e343000ffff000c776562746964652d746573740001bb01000ca00b000c776562746964652d7465737400a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500a00d001a68747470733a2f2f776562746964652d746573742f746573742f00a00900174a53455353494f4e49443d69326c6e307539773573387300000d43616368652d436f6e74726f6c0000096d61782d6167653d3000000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004032413037364245323330433238393130383941414132303631344139384441443131314230323132343030374130363642454531363742303941464337383942000b0100ff";
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+ readResponse(_client);
+
+ assertTrue(true);
+ }
+
+ public void testSSLPacketWithStringKeySize() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="1234025002020008485454502f312e3100000f2f746573742f64756d702f696e666f00000e3139322e3136382e3130302e343000ffff000c776562746964652d746573740001bb01000ca00b000c776562746964652d7465737400a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500a00d001a68747470733a2f2f776562746964652d746573742f746573742f00a00900174a53455353494f4e49443d69326c6e307539773573387300000d43616368652d436f6e74726f6c0000096d61782d6167653d3000000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004032413037364245323330433238393130383941414132303631344139384441443131314230323132343030374130363642454531363742303941464337383942000b000332353600ff";
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+ readResponse(_client);
+
+ assertTrue(true);
+ }
+
+ public void testPacketWithBody() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ os.write(TypeUtil.fromHexString(getTestHeader()));
+ os.write(TypeUtil.fromHexString(getTestShortBody()));
+ os.write(TypeUtil.fromHexString(getTestTinyBody()));
+
+ readResponse(_client);
+
+ assertTrue(true);
+ }
+
+ public void testPacketWithChunkedBody() throws Exception
+ {
+ OutputStream os=_client.getOutputStream();
+
+ String packet="123400ff02040008485454502f312e3100000f2f746573742f64756d702f696e666f0000093132372e302e302e3100ffff00096c6f63616c686f7374000050000007a00e000d4a6176612f312e352e305f313100a00b00096c6f63616c686f737400a0010034746578742f68746d6c2c20696d6167652f6769662c20696d6167652f6a7065672c202a3b20713d2e322c202a2f2a3b20713d2e3200a006000a6b6565702d616c69766500a00700216170706c69636174696f6e2f782d7777772d666f726d2d75726c656e636f6465640000115472616e736665722d456e636f64696e670000076368756e6b656400000c4d61782d466f727761726473000002313000ff";
+
+ os.write(TypeUtil.fromHexString(packet));
+ os.flush();
+
+ os.write(TypeUtil.fromHexString("1234007e007c7468656e616d653d746865253230717569636b25323062726f776e253230666f782532306a756d70732532306f766572253230746f2532307468652532306c617a79253230646f67253230544845253230515549434b25323042524f574e253230464f582532304a554d50532532304f564552253230544f25323054"));
+ os.flush();
+
+ os.write(TypeUtil.fromHexString("12340042004048452532304c415a59253230444f472532302676616c75656f66323d6162636465666768696a6b6c6d6e6f707172737475767778797a31323334353637383930"));
+ os.flush();
+
+ os.write(TypeUtil.fromHexString("123400020000"));
+ os.flush();
+
+ readResponse(_client);
+ assertTrue(true);
+ }
+
+ private String getTestHeader()
+ {
+ StringBuffer header=new StringBuffer("");
+ header.append("1234026902040008485454502f31");
+ header.append("2e310000162f61646d696e2f496d6167");
+ header.append("6555706c6f61642e68746d00000a3130");
+ header.append("2e34382e31302e3100ffff000a31302e");
+ header.append("34382e31302e3200005000000da00b00");
+ header.append("0a31302e34382e31302e3200a00e005a");
+ header.append("4d6f7a696c6c612f352e30202857696e");
+ header.append("646f77733b20553b2057696e646f7773");
+ header.append("204e5420352e313b20656e2d55533b20");
+ header.append("72763a312e382e312e3129204765636b");
+ header.append("6f2f3230303631323034204669726566");
+ header.append("6f782f322e302e302e3100a001006374");
+ header.append("6578742f786d6c2c6170706c69636174");
+ header.append("696f6e2f786d6c2c6170706c69636174");
+ header.append("696f6e2f7868746d6c2b786d6c2c7465");
+ header.append("78742f68746d6c3b713d302e392c7465");
+ header.append("78742f706c61696e3b713d302e382c69");
+ header.append("6d6167652f706e672c2a2f2a3b713d30");
+ header.append("2e3500a004000e656e2d75732c656e3b");
+ header.append("713d302e3500a003000c677a69702c64");
+ header.append("65666c61746500a002001e49534f2d38");
+ header.append("3835392d312c7574662d383b713d302e");
+ header.append("372c2a3b713d302e3700000a4b656570");
+ header.append("2d416c69766500000333303000a00600");
+ header.append("0a6b6565702d616c69766500a00d003f");
+ header.append("687474703a2f2f31302e34382e31302e");
+ header.append("322f61646d696e2f496d61676555706c");
+ header.append("6f61642e68746d3f6964303d4974656d");
+ header.append("266964313d32266964323d696d673200");
+ header.append("a00900174a53455353494f4e49443d75");
+ header.append("383977733070696168746d00a0070046");
+ header.append("6d756c7469706172742f666f726d2d64");
+ header.append("6174613b20626f756e646172793d2d2d");
+ header.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ header.append("2d2d2d2d2d2d2d2d2d39343338333235");
+ header.append("34323630383700a00800033735390000");
+ header.append("0c4d61782d466f727761726473000002");
+ header.append("3130000500176964303d4974656d2669");
+ header.append("64313d32266964323d696d673200ff");
+
+ return header.toString();
+
+ }
+
+ private String getTestShortBody()
+ {
+ StringBuffer body=new StringBuffer("");
+
+ body.append("123402f702f52d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d3934333833323534323630");
+ body.append("38370d0a436f6e74656e742d44697370");
+ body.append("6f736974696f6e3a20666f726d2d6461");
+ body.append("74613b206e616d653d227265636f7264");
+ body.append("4964220d0a0d0a320d0a2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d393433383332353432");
+ body.append("363038370d0a436f6e74656e742d4469");
+ body.append("73706f736974696f6e3a20666f726d2d");
+ body.append("646174613b206e616d653d226e616d65");
+ body.append("220d0a0d0a4974656d0d0a2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d3934333833323534");
+ body.append("32363038370d0a436f6e74656e742d44");
+ body.append("6973706f736974696f6e3a20666f726d");
+ body.append("2d646174613b206e616d653d22746e49");
+ body.append("6d674964220d0a0d0a696d67320d0a2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d39343338");
+ body.append("3332353432363038370d0a436f6e7465");
+ body.append("6e742d446973706f736974696f6e3a20");
+ body.append("666f726d2d646174613b206e616d653d");
+ body.append("227468756d624e61696c496d61676546");
+ body.append("696c65223b2066696c656e616d653d22");
+ body.append("6161612e747874220d0a436f6e74656e");
+ body.append("742d547970653a20746578742f706c61");
+ body.append("696e0d0a0d0a61616161616161616161");
+ body.append("61616161616161616161616161616161");
+ body.append("61616161616161616161616161616161");
+ body.append("61616161616161616161616161616161");
+ body.append("0d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d39");
+ body.append("3433383332353432363038370d0a436f");
+ body.append("6e74656e742d446973706f736974696f");
+ body.append("6e3a20666f726d2d646174613b206e61");
+ body.append("6d653d226c61726765496d6167654669");
+ body.append("6c65223b2066696c656e616d653d2261");
+ body.append("61612e747874220d0a436f6e74656e74");
+ body.append("2d547970653a20746578742f706c6169");
+ body.append("6e0d0a0d0a6161616161616161616161");
+ body.append("61616161616161616161616161616161");
+ body.append("61616161616161616161616161616161");
+ body.append("6161616161616161616161616161610d");
+ body.append("0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d");
+ body.append("2d2d2d2d2d2d2d2d2d2d2d2d2d2d3934");
+ body.append("33383332353432363038372d2d");
+
+ return body.toString();
+
+ }
+
+ private String getTestTinyBody()
+ {
+ StringBuffer body = new StringBuffer("");
+
+ body.append("123400042d2d0d0a");
+
+ return body.toString();
+
+ }
+
+ // TODO: char array instead of string?
+ private String readResponse(Socket _client) throws IOException
+ {
+ BufferedReader br=null;
+
+ try
+ {
+ br=new BufferedReader(new InputStreamReader(_client.getInputStream()));
+
+ StringBuffer sb=new StringBuffer();
+ String line;
+ while ((line=br.readLine()) != null)
+ {
+ sb.append(line);
+ sb.append('\n');
+ }
+
+ return sb.toString();
+ }
+ finally
+ {
+ if (br != null)
+ {
+ br.close();
+ }
+ }
+ }
+
+ public static class Handler extends AbstractHandler
+ {
+ public void handle(String target, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+ {
+ Request base_request=(request instanceof Request) ? (Request) request : HttpConnection.getCurrentConnection().getRequest();
+ base_request.setHandled(true);
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentType("text/plain");
+ response.getWriter().println("success");
+ }
+
+ }
+
+}
diff --git a/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/TestAjpParser.java b/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/TestAjpParser.java
new file mode 100644
index 0000000000..facba13082
--- /dev/null
+++ b/jetty-ajp/src/test/java/org/eclipse/jetty/ajp/TestAjpParser.java
@@ -0,0 +1,620 @@
+// ========================================================================
+// Copyright (c) 2004-2009 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.ajp;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.ByteArrayBuffer;
+import org.eclipse.jetty.io.ByteArrayEndPoint;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.SimpleBuffers;
+import org.eclipse.jetty.util.TypeUtil;
+
+public class TestAjpParser extends TestCase
+{
+
+ public void testPacket1() throws Exception
+ {
+ String packet = "123401070202000f77696474683d20485454502f312e300000122f636f6e74726f6c2f70726f647563742f2200000e3230382e32372e3230332e31323800ffff000c7777772e756c74612e636f6d000050000005a006000a6b6565702d616c69766500a00b000c7777772e756c74612e636f6d00a00e002b4d6f7a696c6c612f342e302028636f6d70617469626c653b20426f726465724d616e6167657220332e302900a0010043696d6167652f6769662c20696d6167652f782d786269746d61702c20696d6167652f6a7065672c20696d6167652f706a7065672c20696d6167652f706d672c202a2f2a00a008000130000600067570726f64310008000a4145533235362d53484100ff";
+ byte[] src = TypeUtil.fromHexString(packet);
+
+ ByteArrayBuffer buffer= new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]{buffer});
+
+ EndPoint endp = new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+
+ parser.parseAvailable();
+
+ assertTrue(true);
+ }
+
+ public void testPacket2() throws Exception
+ {
+ String packet="1234020102020008485454502f312e3100000f2f6363632d7777777777772f61616100000c38382e3838382e38382e383830ffff00116363632e6363636363636363632e636f6d0001bb010009a00b00116363632e6363636363636363632e636f6d00a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004039324643303544413043444141443232303137413743443141453939353132413330443938363838423843433041454643364231363035323543433232353341000b0100ff";
+ byte[] src=TypeUtil.fromHexString(packet);
+ ByteArrayBuffer buffer=new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]
+ { buffer });
+ EndPoint endp=new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+ parser.parse();
+ assertTrue(true);
+ }
+
+ public void testPacket3() throws Exception
+ {
+ String packet="1234028f02020008485454502f312e3100000d2f666f726d746573742e6a737000000d3139322e3136382e342e31383000ffff00107777772e777265636b6167652e6f726700005000000aa0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a00200075554462d382c2a00a003000c677a69702c6465666c61746500a004000e656e2d67622c656e3b713d302e3500a006000a6b6565702d616c69766500a00900f95048505345535349443d37626361383232616638333466316465373663633630336366636435313938633b20667041757468436f6f6b69653d433035383430394537393344364245434633324230353234344242303039343230383344443645443533304230454637464137414544413745453231313538333745363033454435364332364446353531383635333335423433374531423637414641343533364345304546323342333642323133374243423932333943363631433131443330393842333938414546334546334146454344423746353842443b204a53455353494f4e49443d7365366331623864663432762e6a657474793300a00b00107777772e777265636b6167652e6f726700000a6b6565702d616c69766500000333303000a00e00654d6f7a696c6c612f352e3020285831313b20553b204c696e7578207838365f36343b20656e2d55533b2072763a312e382e302e3929204765636b6f2f3230303631323035202844656269616e2d312e382e302e392d3129204570697068616e792f322e313400a008000130000600066a657474793300ff";
+ byte[] src=TypeUtil.fromHexString(packet);
+ ByteArrayBuffer buffer=new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]
+ { buffer });
+ EndPoint endp=new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+ parser.parse();
+ assertTrue(true);
+ }
+
+
+ public void testSSLPacketWithIntegerKeySize() throws Exception
+ {
+ String packet = "1234025002020008485454502f312e3100000f2f746573742f64756d702f696e666f00000e3139322e3136382e3130302e343000ffff000c776562746964652d746573740001bb01000ca00b000c776562746964652d7465737400a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500a00d001a68747470733a2f2f776562746964652d746573742f746573742f00a00900174a53455353494f4e49443d69326c6e307539773573387300000d43616368652d436f6e74726f6c0000096d61782d6167653d3000000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004032413037364245323330433238393130383941414132303631344139384441443131314230323132343030374130363642454531363742303941464337383942000b0100ff";
+ byte[] src = TypeUtil.fromHexString(packet);
+
+ ByteArrayBuffer buffer= new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]{buffer});
+
+ EndPoint endp = new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+
+ parser.parseAvailable();
+
+ assertTrue(true);
+ }
+
+ public void testSSLPacketWithStringKeySize() throws Exception
+ {
+ String packet = "1234025002020008485454502f312e3100000f2f746573742f64756d702f696e666f00000e3139322e3136382e3130302e343000ffff000c776562746964652d746573740001bb01000ca00b000c776562746964652d7465737400a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500a00d001a68747470733a2f2f776562746964652d746573742f746573742f00a00900174a53455353494f4e49443d69326c6e307539773573387300000d43616368652d436f6e74726f6c0000096d61782d6167653d3000000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004032413037364245323330433238393130383941414132303631344139384441443131314230323132343030374130363642454531363742303941464337383942000b000332353600ff";
+ byte[] src = TypeUtil.fromHexString(packet);
+
+ ByteArrayBuffer buffer= new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]{buffer});
+
+ EndPoint endp = new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+
+ parser.parseAvailable();
+
+ assertTrue(true);
+ }
+
+ public void testSSLPacketFragment() throws Exception
+ {
+ String packet = "1234025002020008485454502f312e3100000f2f746573742f64756d702f696e666f00000e3139322e3136382e3130302e343000ffff000c776562746964652d746573740001bb01000ca00b000c776562746964652d7465737400a00e005a4d6f7a696c6c612f352e30202857696e646f77733b20553b2057696e646f7773204e5420352e313b20656e2d55533b2072763a312e382e312e3129204765636b6f2f32303036313230342046697265666f782f322e302e302e3100a0010063746578742f786d6c2c6170706c69636174696f6e2f786d6c2c6170706c69636174696f6e2f7868746d6c2b786d6c2c746578742f68746d6c3b713d302e392c746578742f706c61696e3b713d302e382c696d6167652f706e672c2a2f2a3b713d302e3500a004000e656e2d75732c656e3b713d302e3500a003000c677a69702c6465666c61746500a002001e49534f2d383835392d312c7574662d383b713d302e372c2a3b713d302e3700000a4b6565702d416c69766500000333303000a006000a6b6565702d616c69766500a00d001a68747470733a2f2f776562746964652d746573742f746573742f00a00900174a53455353494f4e49443d69326c6e307539773573387300000d43616368652d436f6e74726f6c0000096d61782d6167653d3000000c4d61782d466f7277617264730000023130000800124448452d5253412d4145533235362d5348410009004032413037364245323330433238393130383941414132303631344139384441443131314230323132343030374130363642454531363742303941464337383942000b0100ff";
+ byte[] src = TypeUtil.fromHexString(packet);
+
+ for (int f=1;f<src.length;f++)
+ {
+ byte[] frag0=new byte[src.length-f];
+ byte[] frag1=new byte[f];
+
+ System.arraycopy(src,0,frag0,0,src.length-f);
+ System.arraycopy(src,src.length-f,frag1,0,f);
+
+ ByteArrayBuffer buffer= new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]{buffer});
+
+ ByteArrayEndPoint endp = new ByteArrayEndPoint(frag0,Ajp13Packet.MAX_PACKET_SIZE);
+ endp.setNonBlocking(true);
+
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(new Ajp13Generator(buffers,endp,0,0));
+ parser.parseNext();
+
+ endp.setIn(new ByteArrayBuffer(frag1));
+ parser.parseAvailable();
+ }
+
+ assertTrue(true);
+ }
+
+
+
+ public void testPacketWithBody() throws Exception
+ {
+ String packet=getTestHeader();
+ byte[] src=TypeUtil.fromHexString(packet);
+ ByteArrayBuffer buffer=new ByteArrayBuffer(Ajp13Packet.MAX_PACKET_SIZE);
+ SimpleBuffers buffers=new SimpleBuffers(new Buffer[]
+ { buffer });
+ ByteArrayEndPoint endp=new ByteArrayEndPoint(src,Ajp13Packet.MAX_PACKET_SIZE);
+ endp.setNonBlocking(true);
+
+ final int count[]={0};
+ Ajp13Generator gen = new Ajp13Generator(buffers,endp,0,0)
+ {
+ public void getBodyChunk() throws IOException
+ {
+ count[0]++;
+ super.getBodyChunk();
+ }
+ };
+ Ajp13Parser parser = new Ajp13Parser(buffers,endp);
+ parser.setEventHandler(new EH());
+ parser.setGenerator(gen);
+
+ parser.parseNext();
+ assertEquals(1,parser.getState());
+ assertEquals(0,count[0]);
+
+ endp.setIn(new ByteArrayBuffer(TypeUtil.fromHexString(getTestShortBody())));
+
+ parser.parseNext();
+ assertEquals(1,parser.getState());
+ assertEquals(1,count[0]);
+
+ endp.setIn(new ByteArrayBuffer(TypeUtil.fromHexString(getTestTinyBody())));
+
+ parser.parseNext();
+ parser.parseNext();
+ assertEquals(0,parser.getState());
+ assertEquals(1,count[0]);
+
+ assertTrue(true);