Merge remote-tracking branch 'origin/master' into servlet-3.1-api
diff --git a/VERSION.txt b/VERSION.txt
index 4da151f..64c6a8e 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,5 +1,18 @@
-jetty-9.0.2-SNAPSHOT
+jetty-9.0.3-SNAPSHOT
+jetty-9.0.2.v20130417 - 17 April 2013
+ + 364921 FIN WAIT sockets
+ + 402885 reuse Deflaters in GzipFilter
+ + 403591 do not use the ConcurrentArrayBlockingQueue for thread pool, selector
+ and async request log
+ + 404511 fixed poor methods in ArrayTernaryTrie
+ + 405119 Tidy up comments and code formatting for osgi
+ + 405352 Servlet init-param always overridden by WebServlet annotation
+ + 405364 spdy imeplement MAX_CONCURRENT_STREAMS
+ + 405449 spdy improve handling of duplicate stream Ids
+ + 405540 ServletContextListeners call in reverse in doStop
+ + 405551 InputStreamResponseListener.await returns null when request fails.
+ + 405679 example other server for documentation
jetty-9.0.1.v20130408 - 08 April 2013
+ 384552 add comment to jetty-https.xml describing keymanager password
diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml
index 6ad817d..104e6c4 100644
--- a/aggregates/jetty-all/pom.xml
+++ b/aggregates/jetty-all/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index 6defdb5..7353987 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>example-async-rest</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty.example-async-rest</groupId>
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index 0cb4940..df2b793 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>example-async-rest</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty.example-async-rest</groupId>
diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml
index 082de5c..640f748 100644
--- a/examples/async-rest/pom.xml
+++ b/examples/async-rest/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.examples</groupId>
<artifactId>examples-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml
index 498e11d..0b32a4c 100644
--- a/examples/embedded/pom.xml
+++ b/examples/embedded/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.examples</groupId>
<artifactId>examples-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java
index c8b5f94..92f5ddb 100644
--- a/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java
+++ b/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java
@@ -67,6 +67,7 @@
new SslConnectionFactory(sslContextFactory,"http/1.1"),
new HttpConnectionFactory(https_config));
https.setPort(8443);
+ https.setIdleTimeout(500000);
// Set the connectors
server.setConnectors(new Connector[] { http, https });
diff --git a/examples/embedded/src/main/resources/jetty-logging.properties b/examples/embedded/src/main/resources/jetty-logging.properties
index f912160..73456ad 100644
--- a/examples/embedded/src/main/resources/jetty-logging.properties
+++ b/examples/embedded/src/main/resources/jetty-logging.properties
@@ -5,5 +5,6 @@
#org.eclipse.jetty.STACKS=false
#org.eclipse.jetty.spdy.LEVEL=DEBUG
#org.eclipse.jetty.server.LEVEL=DEBUG
-#org.eclipse.jetty.io.ssl.LEVEL=DEBUG
+org.eclipse.jetty.io.LEVEL=DEBUG
+org.eclipse.jetty.io.ssl.LEVEL=DEBUG
#org.eclipse.jetty.spdy.server.LEVEL=DEBUG
diff --git a/examples/embedded/src/main/resources/jetty-otherserver.xml b/examples/embedded/src/main/resources/jetty-otherserver.xml
new file mode 100644
index 0000000..04e3358
--- /dev/null
+++ b/examples/embedded/src/main/resources/jetty-otherserver.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
+
+<Configure id="OtherServer" class="org.eclipse.jetty.server.Server">
+ <Set name="handler">
+ <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
+ <Set name="handlers">
+ <Array type="org.eclipse.jetty.server.Handler">
+ <Item>
+ <New id="OtherContexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
+ </Item>
+ <Item>
+ <New class="org.eclipse.jetty.server.handler.DefaultHandler"/>
+ </Item>
+ </Array>
+ </Set>
+ </New>
+ </Set>
+
+ <Call name="addConnector">
+ <Arg>
+ <New class="org.eclipse.jetty.server.ServerConnector">
+ <Arg name="server"><Ref refid="OtherServer" /></Arg>
+ <Set name="port">8888</Set>
+ </New>
+ </Arg>
+ </Call>
+
+ <Call name="addBean">
+ <Arg>
+ <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
+ <Set name="contexts">
+ <Ref refid="OtherContexts" />
+ </Set>
+
+ <Call id="webappprovider" name="addAppProvider">
+ <Arg>
+ <New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
+ <Set name="monitoredDirName"><Property name="jetty.home" default="." />/other-webapps</Set>
+ <Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
+ <Set name="configurationManager">
+ <New class="org.eclipse.jetty.deploy.PropertiesConfigurationManager"/>
+ </Set>
+ </New>
+ </Arg>
+ </Call>
+ </New>
+ </Arg>
+ </Call>
+</Configure>
diff --git a/examples/pom.xml b/examples/pom.xml
index a5d95ba..bd2e62b 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>org.eclipse.jetty.examples</groupId>
diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml
index 32bb8c6..8661a35 100644
--- a/jetty-annotations/pom.xml
+++ b/jetty-annotations/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-annotations</artifactId>
diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml
index 80f05c5..cb26c36 100755
--- a/jetty-ant/pom.xml
+++ b/jetty-ant/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-ant</artifactId>
diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml
index c1236c3..331f400 100644
--- a/jetty-client/pom.xml
+++ b/jetty-client/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamResponseListener.java b/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamResponseListener.java
index 644326a..6ac55e6 100644
--- a/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamResponseListener.java
+++ b/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamResponseListener.java
@@ -130,28 +130,23 @@
}
@Override
- public void onFailure(Response response, Throwable failure)
- {
- LOG.debug("Queuing failure {} {}", FAILURE, failure);
- queue.offer(FAILURE);
- responseLatch.countDown();
- resultLatch.countDown();
- this.failure = failure;
- signal();
- }
-
- @Override
- public void onSuccess(Response response)
- {
- LOG.debug("Queuing end of content {}{}", EOF, "");
- queue.offer(EOF);
- }
-
- @Override
public void onComplete(Result result)
{
this.result = result;
+ if (result.isSucceeded())
+ {
+ LOG.debug("Queuing end of content {}{}", EOF, "");
+ queue.offer(EOF);
+ }
+ else
+ {
+ LOG.debug("Queuing failure {} {}", FAILURE, failure);
+ queue.offer(FAILURE);
+ this.failure = result.getFailure();
+ responseLatch.countDown();
+ }
resultLatch.countDown();
+ signal();
}
protected boolean await()
@@ -176,7 +171,7 @@
{
synchronized (this)
{
- notify();
+ notifyAll();
}
}
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientStreamTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientStreamTest.java
index 218f0e0..5a800af 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientStreamTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientStreamTest.java
@@ -445,6 +445,20 @@
Assert.assertNull(failure.get());
}
+ @Test
+ public void testInputStreamResponseListenerFailedBeforeResponse() throws Exception
+ {
+ start(new EmptyServerHandler());
+
+ InputStreamResponseListener listener = new InputStreamResponseListener();
+ // Connect to the wrong port
+ client.newRequest("localhost", 0)
+ .scheme(scheme)
+ .send(listener);
+ Result result = listener.await(5, TimeUnit.SECONDS);
+ Assert.assertNotNull(result);
+ }
+
@Test(expected = ExecutionException.class)
public void testInputStreamContentProviderThrowingWhileReading() throws Exception
{
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java
index 67c9931..c7a685c 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java
@@ -357,12 +357,7 @@
proxy.flushToClient(record);
record = proxy.readFromClient();
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
- proxy.flushToServer(record);
-
- record = proxy.readFromClient();
Assert.assertNull(record);
- proxy.flushToServer(record);
server.close();
}
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java
index 1faca02..e0130dd 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java
@@ -72,7 +72,6 @@
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
public class SslBytesServerTest extends SslBytesTest
@@ -87,6 +86,7 @@
private SslContextFactory sslContextFactory;
private SSLContext sslContext;
private SimpleProxy proxy;
+ private Runnable idleHook;
@Before
public void init() throws Exception
@@ -119,6 +119,15 @@
}
};
}
+
+ @Override
+ protected boolean onReadTimeout()
+ {
+ final Runnable idleHook = SslBytesServerTest.this.idleHook;
+ if (idleHook != null)
+ idleHook.run();
+ return super.onReadTimeout();
+ }
}, connector, endPoint);
}
};
@@ -165,7 +174,6 @@
}
};
connector.setIdleTimeout(idleTimeout);
-// connector.setPort(5870);
connector.setPort(0);
server.addConnector(connector);
@@ -209,7 +217,7 @@
proxy = new SimpleProxy(threadPool, "localhost", serverPort);
proxy.start();
- logger.debug(":{} <==> :{}", proxy.getPort(), serverPort);
+ logger.info("proxy:{} <==> server:{}", proxy.getPort(), serverPort);
}
@After
@@ -377,13 +385,9 @@
Assert.assertNull(String.valueOf(record), record);
proxy.flushToServer(record);
- // Close Alert
- record = proxy.readFromServer();
- proxy.flushToClient(record);
// Socket close
record = proxy.readFromServer();
Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
}
@Test
@@ -669,13 +673,9 @@
Assert.assertNull(String.valueOf(record), record);
proxy.flushToServer(record);
- // Close Alert
- record = proxy.readFromServer();
- proxy.flushToClient(record);
// Socket close
record = proxy.readFromServer();
Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
}
@Test
@@ -728,22 +728,15 @@
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record);
- // Close Alert
+ // Socket close
record = proxy.readFromServer();
- Assert.assertNotNull(record);
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
- // We can't forward to the client, its socket is already closed
+ Assert.assertNull(record);
// Check that we did not spin
TimeUnit.MILLISECONDS.sleep(500);
Assert.assertThat(sslFills.get(), Matchers.lessThan(20));
Assert.assertThat(sslFlushes.get(), Matchers.lessThan(20));
Assert.assertThat(httpParses.get(), Matchers.lessThan(20));
-
- // Socket close
- record = proxy.readFromServer();
- Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
}
@Test
@@ -803,11 +796,9 @@
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record);
- // Close Alert
+ // Socket close
record = proxy.readFromServer();
- Assert.assertNotNull(record);
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
- // We can't forward to the client, its socket is already closed
+ Assert.assertNull(String.valueOf(record), record);
// Check that we did not spin
TimeUnit.MILLISECONDS.sleep(500);
@@ -819,11 +810,6 @@
record = proxy.readFromClient();
Assert.assertNull(String.valueOf(record), record);
proxy.flushToServer(record);
-
- // Socket close
- record = proxy.readFromServer();
- Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
}
@Test
@@ -864,12 +850,9 @@
// Close the raw socket, this generates a truncation attack
proxy.flushToServer(null);
- // Expect alert + raw close from server
- record = proxy.readFromServer();
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
+ // Expect raw close from server
record = proxy.readFromServer();
Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
// Check that we did not spin
TimeUnit.MILLISECONDS.sleep(500);
@@ -917,12 +900,9 @@
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record);
- // Expect alert + raw close from server
- record = proxy.readFromServer();
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
+ // Expect raw close from server
record = proxy.readFromServer();
Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
// Check that we did not spin
TimeUnit.MILLISECONDS.sleep(500);
@@ -1099,6 +1079,7 @@
System.arraycopy(closeBytes, 0, bytes, dataBytes.length, closeBytes.length / 2);
proxy.flushToServer(100, bytes);
+ // Send the other half of the close alert bytes
bytes = new byte[closeBytes.length - closeBytes.length / 2];
System.arraycopy(closeBytes, closeBytes.length / 2, bytes, 0, bytes.length);
proxy.flushToServer(100, bytes);
@@ -1113,27 +1094,15 @@
Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
proxy.flushToClient(record);
- // Close Alert
+ // Socket close
record = proxy.readFromServer();
- Assert.assertNotNull(record);
- Assert.assertEquals(TLSRecord.Type.ALERT, record.getType());
- // We can't forward to the client, its socket is already closed
+ Assert.assertNull(record);
// Check that we did not spin
TimeUnit.MILLISECONDS.sleep(500);
Assert.assertThat(sslFills.get(), Matchers.lessThan(20));
Assert.assertThat(sslFlushes.get(), Matchers.lessThan(20));
Assert.assertThat(httpParses.get(), Matchers.lessThan(20));
-
- // Socket close
- record = proxy.readFromClient();
- Assert.assertNull(String.valueOf(record), record);
- proxy.flushToServer(record);
-
- // Socket close
- record = proxy.readFromServer();
- Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
}
@Test
@@ -1749,13 +1718,37 @@
client.close();
}
- @Ignore
@Test
public void testRequestConcurrentWithIdleExpiration() throws Exception
{
final SSLSocket client = newClient();
+ final OutputStream clientOutput = client.getOutputStream();
final CountDownLatch latch = new CountDownLatch(1);
+ idleHook = new Runnable()
+ {
+ public void run()
+ {
+ if (latch.getCount()==0)
+ return;
+ try
+ {
+ // Send request
+ clientOutput.write(("" +
+ "GET / HTTP/1.1\r\n" +
+ "Host: localhost\r\n" +
+ "\r\n").getBytes("UTF-8"));
+ clientOutput.flush();
+ latch.countDown();
+ }
+ catch (Exception x)
+ {
+ // Latch won't trigger and test will fail
+ x.printStackTrace();
+ }
+ }
+ };
+
SimpleProxy.AutomaticFlow automaticProxyFlow = proxy.startAutomaticFlow();
client.startHandshake();
Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
@@ -1779,86 +1772,13 @@
Assert.assertThat(sslFlushes.get(), Matchers.lessThan(20));
Assert.assertThat(httpParses.get(), Matchers.lessThan(50));
- completeClose(client);
+ record = proxy.readFromServer();
+ Assert.assertNull(record);
TimeUnit.MILLISECONDS.sleep(200);
- //System.err.println(((Dumpable)server.getConnectors()[0]).dump());
Assert.assertThat(((Dumpable)server.getConnectors()[0]).dump(), Matchers.not(Matchers.containsString("SCEP@")));
-
}
- /*
- @Test
- public void testRequestWriteBlockedWithPipelinedRequest() throws Exception
- {
- final SSLSocket client = newClient();
- final OutputStream clientOutput = client.getOutputStream();
-
- SimpleProxy.AutomaticFlow automaticProxyFlow = proxy.startAutomaticFlow();
- client.startHandshake();
- Assert.assertTrue(automaticProxyFlow.stop(5, TimeUnit.SECONDS));
-
- byte[] data = new byte[128 * 1024];
- Arrays.fill(data, (byte)'X');
- final String content = new String(data, "UTF-8");
- Future<Object> request = threadPool.submit(new Callable<Object>()
- {
- public Object call() throws Exception
- {
- clientOutput.write(("" +
- "POST /echo HTTP/1.1\r\n" +
- "Host: localhost\r\n" +
- "Content-Length: " + content.length() + "\r\n" +
- "\r\n" +
- content).getBytes("UTF-8"));
- clientOutput.flush();
- return null;
- }
- });
-
- // Nine TLSRecords will be generated for the request
- for (int i = 0; i < 9; ++i)
- {
- // Application data
- TLSRecord record = proxy.readFromClient();
- Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
- proxy.flushToServer(record, 0);
- }
- Assert.assertNull(request.get(5, TimeUnit.SECONDS));
-
- // We do not read the big request to cause a write blocked on the server
- TimeUnit.MILLISECONDS.sleep(500);
-
- // Now send the pipelined request
- Future<Object> pipelined = threadPool.submit(new Callable<Object>()
- {
- public Object call() throws Exception
- {
- clientOutput.write(("" +
- "GET /pipelined HTTP/1.1\r\n" +
- "Host: localhost\r\n" +
- "\r\n").getBytes("UTF-8"));
- clientOutput.flush();
- return null;
- }
- });
-
- TLSRecord record = proxy.readFromClient();
- Assert.assertEquals(TLSRecord.Type.APPLICATION, record.getType());
- proxy.flushToServer(record, 0);
- Assert.assertNull(pipelined.get(5, TimeUnit.SECONDS));
-
- // Check that we did not spin
- TimeUnit.MILLISECONDS.sleep(500);
- Assert.assertThat(sslFills.get(), lessThan(20));
- Assert.assertThat(sslFlushes.get(), lessThan(20));
- Assert.assertThat(httpParses.get(), lessThan(50));
-
- Thread.sleep(5000);
-
- // closeClient(client);
- }
- */
private void assumeJavaVersionSupportsTLSRenegotiations()
{
// Due to a security bug, TLS renegotiations were disabled in JDK 1.6.0_19-21
@@ -1893,31 +1813,8 @@
Assert.assertNull(String.valueOf(record), record);
proxy.flushToServer(record);
- // Close Alert
- record = proxy.readFromServer();
- proxy.flushToClient(record);
-
// Socket close
record = proxy.readFromServer();
Assert.assertNull(String.valueOf(record), record);
- proxy.flushToClient(record);
- }
-
- private void completeClose(SSLSocket client) throws Exception
- {
- client.close();
-
- // Close Alert
- TLSRecord record = proxy.readFromClient();
- proxy.flushToServer(record);
- // Socket close
- record = proxy.readFromClient();
- Assert.assertNull(String.valueOf(record), record);
- proxy.flushToServer(record);
-
- // Close Alert
- record = proxy.readFromServer();
- proxy.flushToClient(record);
-
}
}
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java
index c7fe744..b0f5769 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java
@@ -34,12 +34,17 @@
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+import org.eclipse.jetty.toolchain.test.TestTracker;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.junit.Assert;
+import org.junit.Rule;
public abstract class SslBytesTest
{
+ @Rule
+ public TestTracker tracker = new TestTracker();
+
protected final Logger logger = Log.getLogger(getClass());
public static class TLSRecord
@@ -115,8 +120,7 @@
public void start() throws Exception
{
- serverSocket = new ServerSocket(47009);
-// serverSocket = new ServerSocket(0);
+ serverSocket = new ServerSocket(0);
Thread acceptor = new Thread(this);
acceptor.start();
server = new Socket(serverHost, serverPort);
diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml
index e146ba8..e339635 100644
--- a/jetty-continuation/pom.xml
+++ b/jetty-continuation/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-continuation</artifactId>
diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml
index 55848f5..5d25eef 100644
--- a/jetty-deploy/pom.xml
+++ b/jetty-deploy/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-deploy</artifactId>
diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml
index dfe828f..2189d3b 100644
--- a/jetty-distribution/pom.xml
+++ b/jetty-distribution/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>jetty-distribution</artifactId>
<name>Jetty :: Distribution Assemblies</name>
diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml
index 1403df1..f13379c 100644
--- a/jetty-http/pom.xml
+++ b/jetty-http/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-http</artifactId>
diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml
index 24eedb6..6af3a28 100644
--- a/jetty-io/pom.xml
+++ b/jetty-io/pom.xml
@@ -2,7 +2,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-io</artifactId>
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java
index 4fca18f..19b6548 100644
--- a/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java
+++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java
@@ -190,6 +190,10 @@
if (DEBUG)
LOG.debug("onFillable enter {}", getEndPoint());
+ // We have received a close handshake, close the end point to send FIN.
+ if (_decryptedEndPoint.isInputShutdown())
+ getEndPoint().close();
+
// wake up whoever is doing the fill or the flush so they can
// do all the filling, unwrapping, wrapping and flushing
_decryptedEndPoint.getFillInterest().fillable();
@@ -612,8 +616,11 @@
// maybe we will fill some more on a retry
continue;
}
- // we need to wait for more net data
- return 0;
+ else
+ {
+ // we need to wait for more net data
+ return 0;
+ }
case FINISHED:
throw new IllegalStateException();
@@ -726,6 +733,7 @@
{
_cannotAcceptMoreAppDataToFlush = true;
getEndPoint().flush(_encryptedOutput);
+ getEndPoint().shutdownOutput();
// If we failed to flush the close handshake then we will just pretend that
// the write has progressed normally and let a subsequent call to flush
// (or WriteFlusher#onIncompleteFlushed) to finish writing the close handshake.
@@ -733,8 +741,11 @@
if (BufferUtil.hasContent(_encryptedOutput))
return false;
}
-
// otherwise we have written, and the caller will close the underlying connection
+ else
+ {
+ getEndPoint().shutdownOutput();
+ }
return allConsumed;
case BUFFER_UNDERFLOW:
@@ -823,24 +834,37 @@
{
_bufferPool.release(_encryptedOutput);
_encryptedOutput = null;
- if (_sslEngine.isOutboundDone())
- getEndPoint().shutdownOutput();
}
}
@Override
public void shutdownOutput()
{
- _sslEngine.closeOutbound();
- try
+ boolean ishut = isInputShutdown();
+ if (DEBUG)
+ LOG.debug("{} shutdownOutput: oshut={}, ishut={}", SslConnection.this, isOutputShutdown(), ishut);
+ if (ishut)
{
- flush(BufferUtil.EMPTY_BUFFER);
- }
- catch (IOException e)
- {
- LOG.ignore(e);
+ // Aggressively close, since inbound close alert has already been processed
+ // and the TLS specification allows to close the connection directly, which
+ // is what most other implementations expect: a FIN rather than a TLS close
+ // reply. If a TLS close reply is sent, most implementation send a RST.
getEndPoint().close();
}
+ else
+ {
+ try
+ {
+ _sslEngine.closeOutbound();
+ flush(BufferUtil.EMPTY_BUFFER); // Send close handshake
+ SslConnection.this.fillInterested(); // seek reply FIN or RST or close handshake
+ }
+ catch (Exception e)
+ {
+ LOG.ignore(e);
+ getEndPoint().close();
+ }
+ }
}
@Override
diff --git a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java
index 77aea8b..7bd0596 100644
--- a/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java
+++ b/jetty-io/src/test/java/org/eclipse/jetty/io/SelectChannelEndPointSslTest.java
@@ -202,16 +202,21 @@
filled=client.read(sslIn);
if (debug) System.err.println("in="+filled);
- sslIn.flip();
- try
+
+ if (filled>=0)
{
- // Since the client closed abruptly, the server is sending a close alert with a failure
- engine.unwrap(sslIn, appIn);
- Assert.fail();
- }
- catch (SSLException x)
- {
- // Expected
+ // this is the old behaviour.
+ sslIn.flip();
+ try
+ {
+ // Since the client closed abruptly, the server is sending a close alert with a failure
+ engine.unwrap(sslIn, appIn);
+ Assert.fail();
+ }
+ catch (SSLException x)
+ {
+ // Expected
+ }
}
sslIn.clear();
diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml
index 974d960..a719a7b 100644
--- a/jetty-jaas/pom.xml
+++ b/jetty-jaas/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jaas</artifactId>
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index 4ed1f95..d77e5e8 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jaspi</artifactId>
diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml
index dd2813f..d2148b0 100644
--- a/jetty-jmx/pom.xml
+++ b/jetty-jmx/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jmx</artifactId>
diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml
index e58d8f6..29575ba 100644
--- a/jetty-jndi/pom.xml
+++ b/jetty-jndi/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jndi</artifactId>
diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml
index b010b81..ec6c3bc 100644
--- a/jetty-jsp/pom.xml
+++ b/jetty-jsp/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jsp</artifactId>
diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml
index 2d2ae6b..0b046e8 100644
--- a/jetty-jspc-maven-plugin/pom.xml
+++ b/jetty-jspc-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jspc-maven-plugin</artifactId>
diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml
index 1cc716c..9461c3b 100644
--- a/jetty-maven-plugin/pom.xml
+++ b/jetty-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-maven-plugin</artifactId>
diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml
index 2704f7e..684ebd6 100644
--- a/jetty-monitor/pom.xml
+++ b/jetty-monitor/pom.xml
@@ -19,7 +19,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-monitor</artifactId>
diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml
index cf8ca80..8aa82cc 100644
--- a/jetty-nosql/pom.xml
+++ b/jetty-nosql/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-nosql</artifactId>
diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
index a7e5645..1060112 100644
--- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot-jsp</artifactId>
diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
index 5927ad5..62971f7 100644
--- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml
index a630b1f..ba5baef 100644
--- a/jetty-osgi/jetty-osgi-boot/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot</artifactId>
diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml
index db9872a..1d68a56 100644
--- a/jetty-osgi/jetty-osgi-httpservice/pom.xml
+++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-httpservice</artifactId>
diff --git a/jetty-osgi/jetty-osgi-npn/pom.xml b/jetty-osgi/jetty-osgi-npn/pom.xml
index 0515eaa..20a2b34 100644
--- a/jetty-osgi/jetty-osgi-npn/pom.xml
+++ b/jetty-osgi/jetty-osgi-npn/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-npn</artifactId>
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index cf27138..13092a4 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml
index 03634fd..d6cad44 100644
--- a/jetty-osgi/test-jetty-osgi-context/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-context/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-context</artifactId>
diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
index 444840f..18b13fb 100644
--- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml
index 85d0989..19ef69b 100644
--- a/jetty-osgi/test-jetty-osgi/pom.xml
+++ b/jetty-osgi/test-jetty-osgi/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml
index d1bacea..e3a3a49 100644
--- a/jetty-plus/pom.xml
+++ b/jetty-plus/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-plus</artifactId>
diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml
index 27353e1..031e1f4 100644
--- a/jetty-proxy/pom.xml
+++ b/jetty-proxy/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-proxy</artifactId>
diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml
index cdbf469..011a764 100644
--- a/jetty-rewrite/pom.xml
+++ b/jetty-rewrite/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-rewrite</artifactId>
diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml
index ec57a92..0f6dff6 100644
--- a/jetty-runner/pom.xml
+++ b/jetty-runner/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index 9aa83c7..2e91241 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-security</artifactId>
diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml
index 04c86c6..439f48a 100644
--- a/jetty-server/pom.xml
+++ b/jetty-server/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-server</artifactId>
diff --git a/jetty-server/src/main/config/etc/jetty.xml b/jetty-server/src/main/config/etc/jetty.xml
index 2d9b859..668980e 100644
--- a/jetty-server/src/main/config/etc/jetty.xml
+++ b/jetty-server/src/main/config/etc/jetty.xml
@@ -47,11 +47,6 @@
<Arg name="minThreads" type="int">10</Arg>
<Arg name="maxThreads" type="int">200</Arg>
<Arg name="idleTimeout" type="int">60000</Arg>
- <!-- Arg >
- <New class="org.eclipse.jetty.util.ConcurrentArrayBlockingQueue$Unbounded">
- <Arg type='int'>32</Arg>
- </New>
- </Arg -->
<Set name="detailedDump">false</Set>
</New>
</Arg>
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncNCSARequestLog.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncNCSARequestLog.java
index 300d23c..9c5d461 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncNCSARequestLog.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncNCSARequestLog.java
@@ -22,7 +22,7 @@
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
-import org.eclipse.jetty.util.ConcurrentArrayBlockingQueue;
+import org.eclipse.jetty.util.BlockingArrayQueue;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -42,7 +42,7 @@
{
this(null,null);
}
-
+
public AsyncNCSARequestLog(BlockingQueue<String> queue)
{
this(null,queue);
@@ -52,12 +52,12 @@
{
this(filename,null);
}
-
+
public AsyncNCSARequestLog(String filename,BlockingQueue<String> queue)
{
super(filename);
if (queue==null)
- queue=new ConcurrentArrayBlockingQueue.Unbounded<String>();
+ queue=new BlockingArrayQueue<>(1024);
_queue=queue;
}
@@ -67,7 +67,7 @@
{
setName("AsyncNCSARequestLog@"+Integer.toString(AsyncNCSARequestLog.this.hashCode(),16));
}
-
+
@Override
public void run()
{
@@ -78,7 +78,7 @@
String log = _queue.poll(10,TimeUnit.SECONDS);
if (log!=null)
AsyncNCSARequestLog.super.write(log);
-
+
while(!_queue.isEmpty())
{
log=_queue.poll();
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
index 6d913fb..72d6ee3 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
@@ -303,7 +303,8 @@
*
* @param virtualHosts
* Array of virtual hosts that this context responds to. A null host name or null/empty array means any hostname is acceptable. Host names may be
- * String representation of IP addresses. Host names may start with '*.' to wildcard one level of names.
+ * String representation of IP addresses. Host names may start with '*.' to wildcard one level of names. Host names may start with '@', in which case they
+ * will match the {@link Connector#getName()} for the request.
*/
public void addVirtualHosts(String[] virtualHosts)
{
@@ -817,8 +818,8 @@
if (!_contextListeners.isEmpty())
{
ServletContextEvent event = new ServletContextEvent(_scontext);
- for (ServletContextListener listener : _contextListeners)
- callContextDestroyed(listener,event);
+ for (int i = _contextListeners.size(); i-->0;)
+ callContextDestroyed(_contextListeners.get(i),event);
}
if (_errorHandler != null)
@@ -1093,20 +1094,15 @@
if (!_requestListeners.isEmpty())
{
final ServletRequestEvent sre = new ServletRequestEvent(_scontext,request);
- ListIterator<ServletRequestListener> iter = _requestListeners.listIterator(_requestListeners.size());
- while (iter.hasNext())
- iter.next();
- while (iter.hasPrevious())
- iter.previous().requestDestroyed(sre);
+ for (int i=_requestListeners.size();i-->0;)
+ _requestListeners.get(i).requestDestroyed(sre);
}
if (!_requestAttributeListeners.isEmpty())
{
ListIterator<ServletRequestAttributeListener> iter = _requestAttributeListeners.listIterator(_requestAttributeListeners.size());
- while(iter.hasNext())
- iter.next();
- while(iter.hasPrevious())
- baseRequest.removeEventListener(iter.previous());
+ for (int i=_requestAttributeListeners.size();i-->0;)
+ baseRequest.removeEventListener(_requestAttributeListeners.get(i));
}
}
}
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 552e4b2..aa46b77 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-servlet</artifactId>
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
index 9baefac..4aa3b5d 100644
--- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
+++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
@@ -208,6 +208,9 @@
_filterNameMappings=null;
_servletPathMap=null;
+
+ _matchBeforeIndex=-1;
+ _matchAfterIndex=-1;
}
/* ------------------------------------------------------------ */
@@ -1053,7 +1056,7 @@
public void addFilterMapping (FilterMapping mapping)
{
if (mapping != null)
- {
+ {
Source source = (mapping.getFilterHolder()==null?null:mapping.getFilterHolder().getSource());
FilterMapping[] mappings =getFilterMappings();
if (mappings==null || mappings.length==0)
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index 0e0f464..606a020 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-servlets</artifactId>
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
index bd5a21b..03752cb 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
@@ -26,26 +26,22 @@
import java.util.regex.Pattern;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
-import java.util.zip.GZIPOutputStream;
+import javax.servlet.AsyncEvent;
+import javax.servlet.AsyncListener;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
-import javax.servlet.ServletResponseWrapper;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import org.eclipse.jetty.continuation.Continuation;
-import org.eclipse.jetty.continuation.ContinuationListener;
-import org.eclipse.jetty.continuation.ContinuationSupport;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.servlets.gzip.AbstractCompressedStream;
import org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper;
-import org.eclipse.jetty.util.StringUtil;
+import org.eclipse.jetty.servlets.gzip.GzipOutputStream;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -129,6 +125,9 @@
protected int _minGzipSize=256;
protected int _deflateCompressionLevel=Deflater.DEFAULT_COMPRESSION;
protected boolean _deflateNoWrap = true;
+
+ // non-static, as other GzipFilter instances may have different configurations
+ protected final ThreadLocal<Deflater> _deflater = new ThreadLocal<Deflater>();
protected final Set<String> _methods=new HashSet<String>();
protected Set<String> _excludedAgents;
@@ -296,10 +295,10 @@
}
finally
{
- Continuation continuation = ContinuationSupport.getContinuation(request);
- if (continuation.isSuspended() && continuation.isResponseWrapped())
+ if (request.isAsyncStarted())
{
- continuation.addContinuationListener(new ContinuationListenerWaitingForWrappedResponseToFinish(wrappedResponse));
+
+ request.getAsyncContext().addListener(new FinishOnCompleteListener(wrappedResponse));
}
else if (exceptional && !response.isCommitted())
{
@@ -403,64 +402,55 @@
protected CompressedResponseWrapper createWrappedResponse(HttpServletRequest request, HttpServletResponse response, final String compressionType)
{
CompressedResponseWrapper wrappedResponse = null;
- if (compressionType==null)
+ wrappedResponse = new CompressedResponseWrapper(request,response)
{
- wrappedResponse = new CompressedResponseWrapper(request,response)
+ @Override
+ protected AbstractCompressedStream newCompressedStream(HttpServletRequest request, HttpServletResponse response) throws IOException
{
- @Override
- protected AbstractCompressedStream newCompressedStream(HttpServletRequest request,HttpServletResponse response) throws IOException
+ return new AbstractCompressedStream(compressionType,request,this,_vary)
{
- return new AbstractCompressedStream(null,request,this,_vary)
+ private Deflater _allocatedDeflater;
+
+ @Override
+ protected DeflaterOutputStream createStream() throws IOException
{
- @Override
- protected DeflaterOutputStream createStream() throws IOException
+ if (compressionType == null)
{
return null;
}
- };
- }
- };
- }
- else if (compressionType.equals(GZIP))
- {
- wrappedResponse = new CompressedResponseWrapper(request,response)
- {
- @Override
- protected AbstractCompressedStream newCompressedStream(HttpServletRequest request,HttpServletResponse response) throws IOException
- {
- return new AbstractCompressedStream(compressionType,request,this,_vary)
- {
- @Override
- protected DeflaterOutputStream createStream() throws IOException
+
+ // acquire deflater instance
+ _allocatedDeflater = _deflater.get();
+ if (_allocatedDeflater==null)
+ _allocatedDeflater = new Deflater(_deflateCompressionLevel,_deflateNoWrap);
+ else
{
- return new GZIPOutputStream(_response.getOutputStream(),_bufferSize);
+ _deflater.remove();
+ _allocatedDeflater.reset();
}
- };
- }
- };
- }
- else if (compressionType.equals(DEFLATE))
- {
- wrappedResponse = new CompressedResponseWrapper(request,response)
- {
- @Override
- protected AbstractCompressedStream newCompressedStream(HttpServletRequest request,HttpServletResponse response) throws IOException
- {
- return new AbstractCompressedStream(compressionType,request,this,_vary)
- {
- @Override
- protected DeflaterOutputStream createStream() throws IOException
+
+ switch (compressionType)
{
- return new DeflaterOutputStream(_response.getOutputStream(),new Deflater(_deflateCompressionLevel,_deflateNoWrap));
+ case GZIP:
+ return new GzipOutputStream(_response.getOutputStream(),_allocatedDeflater,_bufferSize);
+ case DEFLATE:
+ return new DeflaterOutputStream(_response.getOutputStream(),_allocatedDeflater,_bufferSize);
}
- };
- }
- };
- }
- else
- {
- throw new IllegalStateException(compressionType + " not supported");
- }
+ throw new IllegalStateException(compressionType + " not supported");
+ }
+
+ @Override
+ public void finish() throws IOException
+ {
+ super.finish();
+ if (_allocatedDeflater != null && _deflater.get() == null)
+ {
+ _deflater.set(_allocatedDeflater);
+ }
+ }
+ };
+ }
+ };
configureWrappedResponse(wrappedResponse);
return wrappedResponse;
}
@@ -472,18 +462,18 @@
wrappedResponse.setMinCompressSize(_minGzipSize);
}
- private class ContinuationListenerWaitingForWrappedResponseToFinish implements ContinuationListener
+ private class FinishOnCompleteListener implements AsyncListener
{
private CompressedResponseWrapper wrappedResponse;
- public ContinuationListenerWaitingForWrappedResponseToFinish(CompressedResponseWrapper wrappedResponse)
+ public FinishOnCompleteListener(CompressedResponseWrapper wrappedResponse)
{
this.wrappedResponse = wrappedResponse;
}
@Override
- public void onComplete(Continuation continuation)
- {
+ public void onComplete(AsyncEvent event) throws IOException
+ {
try
{
wrappedResponse.finish();
@@ -495,7 +485,17 @@
}
@Override
- public void onTimeout(Continuation continuation)
+ public void onTimeout(AsyncEvent event) throws IOException
+ {
+ }
+
+ @Override
+ public void onError(AsyncEvent event) throws IOException
+ {
+ }
+
+ @Override
+ public void onStartAsync(AsyncEvent event) throws IOException
{
}
}
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
index 3ea1c2a..ec125b9 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
@@ -29,13 +29,12 @@
import java.util.zip.DeflaterOutputStream;
import java.util.zip.GZIPOutputStream;
+import javax.servlet.AsyncEvent;
+import javax.servlet.AsyncListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.eclipse.jetty.continuation.Continuation;
-import org.eclipse.jetty.continuation.ContinuationListener;
-import org.eclipse.jetty.continuation.ContinuationSupport;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.HandlerWrapper;
@@ -265,12 +264,28 @@
}
finally
{
- Continuation continuation = ContinuationSupport.getContinuation(request);
- if (continuation.isSuspended() && continuation.isResponseWrapped())
+ if (request.isAsyncStarted())
{
- continuation.addContinuationListener(new ContinuationListener()
+ request.getAsyncContext().addListener(new AsyncListener()
{
- public void onComplete(Continuation continuation)
+
+ @Override
+ public void onTimeout(AsyncEvent event) throws IOException
+ {
+ }
+
+ @Override
+ public void onStartAsync(AsyncEvent event) throws IOException
+ {
+ }
+
+ @Override
+ public void onError(AsyncEvent event) throws IOException
+ {
+ }
+
+ @Override
+ public void onComplete(AsyncEvent event) throws IOException
{
try
{
@@ -281,9 +296,6 @@
LOG.warn(e);
}
}
-
- public void onTimeout(Continuation continuation)
- {}
});
}
else if (exceptional && !response.isCommitted())
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipOutputStream.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipOutputStream.java
new file mode 100644
index 0000000..8f20c2f
--- /dev/null
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipOutputStream.java
@@ -0,0 +1,71 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2013 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.servlets.gzip;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.CRC32;
+import java.util.zip.Deflater;
+import java.util.zip.DeflaterOutputStream;
+
+/**
+ * Reimplementation of {@link java.util.zip.GZIPOutputStream} that supports reusing a {@link Deflater} instance.
+ */
+public class GzipOutputStream extends DeflaterOutputStream
+{
+
+ private final static byte[] GZIP_HEADER = new byte[]
+ { (byte)0x1f, (byte)0x8b, Deflater.DEFLATED, 0, 0, 0, 0, 0, 0, 0 };
+
+ private final CRC32 _crc = new CRC32();
+
+ public GzipOutputStream(OutputStream out, Deflater deflater, int size) throws IOException
+ {
+ super(out,deflater,size);
+ out.write(GZIP_HEADER);
+ }
+
+ public synchronized void write(byte[] buf, int off, int len) throws IOException
+ {
+ super.write(buf,off,len);
+ _crc.update(buf,off,len);
+ }
+
+ public void finish() throws IOException
+ {
+ if (!def.finished())
+ {
+ super.finish();
+ byte[] trailer = new byte[8];
+ writeInt((int)_crc.getValue(),trailer,0);
+ writeInt(def.getTotalIn(),trailer,4);
+ out.write(trailer);
+ }
+ }
+
+ private void writeInt(int i, byte[] buf, int offset)
+ {
+ int o = offset;
+ buf[o++] = (byte)(i & 0xFF);
+ buf[o++] = (byte)((i >>> 8) & 0xFF);
+ buf[o++] = (byte)((i >>> 16) & 0xFF);
+ buf[o++] = (byte)((i >>> 24) & 0xFF);
+ }
+
+}
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PipelineHelper.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PipelineHelper.java
index 8e2fea7..95f0a23 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PipelineHelper.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PipelineHelper.java
@@ -219,8 +219,8 @@
int val = inputStream.read();
try
{
- if (left % 10 == 0)
- Thread.sleep(1);
+ if (left % 1000 == 0)
+ Thread.sleep(10);
}
catch (InterruptedException e)
{
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
index f9296ce..61ff30a 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
@@ -18,7 +18,6 @@
package org.eclipse.jetty.servlets;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
@@ -42,7 +41,9 @@
import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.hamcrest.Matchers;
import org.junit.After;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -91,8 +92,10 @@
_doneRequests.await(10,TimeUnit.SECONDS);
- assertFalse("TEST WAS NOT PARALLEL ENOUGH!",TestServlet.__maxSleepers<=MAX_QOS);
- assertTrue(TestServlet.__maxSleepers<=NUM_CONNECTIONS);
+ if (TestServlet.__maxSleepers<=MAX_QOS)
+ LOG.warn("TEST WAS NOT PARALLEL ENOUGH!");
+ else
+ Assert.assertThat(TestServlet.__maxSleepers,Matchers.lessThanOrEqualTo(NUM_CONNECTIONS));
}
@Test
@@ -109,8 +112,10 @@
}
_doneRequests.await(10,TimeUnit.SECONDS);
- assertFalse("TEST WAS NOT PARALLEL ENOUGH!",TestServlet.__maxSleepers<MAX_QOS);
- assertTrue(TestServlet.__maxSleepers==MAX_QOS);
+ if (TestServlet.__maxSleepers<MAX_QOS)
+ LOG.warn("TEST WAS NOT PARALLEL ENOUGH!");
+ else
+ Assert.assertEquals(TestServlet.__maxSleepers,MAX_QOS);
}
@Test
@@ -126,8 +131,10 @@
}
_doneRequests.await(20,TimeUnit.SECONDS);
- assertFalse("TEST WAS NOT PARALLEL ENOUGH!",TestServlet.__maxSleepers<MAX_QOS);
- assertTrue(TestServlet.__maxSleepers<=MAX_QOS);
+ if (TestServlet.__maxSleepers<MAX_QOS)
+ LOG.warn("TEST WAS NOT PARALLEL ENOUGH!");
+ else
+ Assert.assertEquals(TestServlet.__maxSleepers,MAX_QOS);
}
class Worker implements Runnable {
@@ -137,6 +144,7 @@
_num = num;
}
+ @Override
public void run()
{
for (int i=0;i<NUM_LOOPS;i++)
@@ -170,6 +178,7 @@
_num = num;
}
+ @Override
public void run()
{
URL url=null;
@@ -198,6 +207,7 @@
private static int __sleepers;
private static int __maxSleepers;
+ @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
@@ -232,6 +242,7 @@
public static class QoSFilter2 extends QoSFilter
{
+ @Override
public int getPriority(ServletRequest request)
{
String p = request.getParameter("priority");
diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml
index 7b3020b..8b3fa2d 100644
--- a/jetty-spdy/pom.xml
+++ b/jetty-spdy/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml
index 9bb89ae..4c70d34 100644
--- a/jetty-spdy/spdy-client/pom.xml
+++ b/jetty-spdy/spdy-client/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.spdy</groupId>
<artifactId>spdy-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml
index 3bd7e71..423f327 100644
--- a/jetty-spdy/spdy-core/pom.xml
+++ b/jetty-spdy/spdy-core/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.spdy</groupId>
<artifactId>spdy-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
index a0bda51..30dc870 100644
--- a/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
+++ b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
@@ -244,7 +244,6 @@
@Override
public PingResultInfo ping(PingInfo pingInfo) throws ExecutionException, InterruptedException, TimeoutException
{
- //TODO: find a better name for PingResultInfo
FuturePromise<PingResultInfo> result = new FuturePromise<>();
ping(pingInfo, result);
if (pingInfo.getTimeout() > 0)
@@ -548,10 +547,10 @@
int maxConcurrentStreams = maxConcurrentLocalStreams;
if (maxConcurrentStreams > -1 && oldStreamCountValue >= maxConcurrentStreams)
{
- String msg = String.format("Max concurrent local streams (%d) exceeded.",
+ String message = String.format("Max concurrent local streams (%d) exceeded.",
maxConcurrentStreams);
- LOG.debug(msg);
- promise.failed(new SPDYException(msg));
+ LOG.debug(message);
+ promise.failed(new SPDYException(message));
return null;
}
if (localStreamCount.compareAndSet(oldStreamCountValue, oldStreamCountValue + 1))
@@ -561,22 +560,17 @@
if (streams.putIfAbsent(streamId, stream) != null)
{
- //TODO: fail promise
+ String message = "Duplicate stream id " + streamId;
+ IllegalStateException duplicateIdException = new IllegalStateException(message);
+ promise.failed(duplicateIdException);
if (local)
{
localStreamCount.decrementAndGet();
- throw new IllegalStateException("Duplicate stream id " + streamId);
+ throw duplicateIdException;
}
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.PROTOCOL_ERROR);
LOG.debug("Duplicate stream, {}", rstInfo);
- try
- {
- rst(rstInfo); //TODO: non blocking reset or find the reason why blocking is used
- }
- catch (InterruptedException | ExecutionException | TimeoutException e)
- {
- e.printStackTrace(); // TODO: really catch???
- }
+ rst(rstInfo, new Callback.Adapter()); // We don't care (too much) if the reset fails.
return null;
}
else
diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml
index 37830b2..1045409 100644
--- a/jetty-spdy/spdy-example-webapp/pom.xml
+++ b/jetty-spdy/spdy-example-webapp/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.spdy</groupId>
<artifactId>spdy-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spdy-example-webapp</artifactId>
diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml
index c3ec31e..5be0935 100644
--- a/jetty-spdy/spdy-http-server/pom.xml
+++ b/jetty-spdy/spdy-http-server/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.spdy</groupId>
<artifactId>spdy-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spdy-http-server</artifactId>
diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml
index 0bd4ca8..d489447 100644
--- a/jetty-spdy/spdy-server/pom.xml
+++ b/jetty-spdy/spdy-server/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.spdy</groupId>
<artifactId>spdy-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml
index 97e3aa4..a6f68be 100644
--- a/jetty-spring/pom.xml
+++ b/jetty-spring/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-spring</artifactId>
diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml
index 240d08c..ea93a42 100644
--- a/jetty-start/pom.xml
+++ b/jetty-start/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-start</artifactId>
diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml
index 247bfd2..073591a 100644
--- a/jetty-util-ajax/pom.xml
+++ b/jetty-util-ajax/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-util-ajax</artifactId>
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 01bf1fb..0ea0ce3 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-util</artifactId>
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java
index 4ffc802..6aa3287 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java
@@ -31,7 +31,6 @@
import java.util.concurrent.atomic.AtomicLong;
import org.eclipse.jetty.util.BlockingArrayQueue;
-import org.eclipse.jetty.util.ConcurrentArrayBlockingQueue;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.annotation.ManagedAttribute;
import org.eclipse.jetty.util.annotation.ManagedObject;
@@ -90,9 +89,9 @@
setMaxThreads(maxThreads);
setIdleTimeout(idleTimeout);
setStopTimeout(5000);
-
+
if (queue==null)
- queue=new ConcurrentArrayBlockingQueue.Unbounded<Runnable>();
+ queue=new BlockingArrayQueue<>(_minThreads, _minThreads);
_jobs=queue;
}
diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/QueueBenchmarkTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/QueueBenchmarkTest.java
index 8990102..750c288 100644
--- a/jetty-util/src/test/java/org/eclipse/jetty/util/QueueBenchmarkTest.java
+++ b/jetty-util/src/test/java/org/eclipse/jetty/util/QueueBenchmarkTest.java
@@ -29,15 +29,13 @@
import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.toolchain.test.AdvancedRunner;
-import org.eclipse.jetty.toolchain.test.annotation.Slow;
+import org.eclipse.jetty.toolchain.test.annotation.Stress;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.junit.Assume;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
-@Ignore
@RunWith(AdvancedRunner.class)
public class QueueBenchmarkTest
{
@@ -57,7 +55,7 @@
}
};
- @Slow
+ @Stress("High CPU")
@Test
public void testQueues() throws Exception
{
@@ -77,7 +75,7 @@
testQueues(readers, writers, iterations, queues, false);
}
- @Slow
+ @Stress("High CPU")
@Test
public void testBlockingQueues() throws Exception
{
diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml
index f397e92..0f9acf2 100644
--- a/jetty-webapp/pom.xml
+++ b/jetty-webapp/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-webapp</artifactId>
diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml
index 8633efc..0f43381 100644
--- a/jetty-websocket/pom.xml
+++ b/jetty-websocket/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml
index f850046..dc96e78 100644
--- a/jetty-websocket/websocket-api/pom.xml
+++ b/jetty-websocket/websocket-api/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml
index ae00946..955cd56 100644
--- a/jetty-websocket/websocket-client/pom.xml
+++ b/jetty-websocket/websocket-client/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml
index eb05238..21e74f2 100644
--- a/jetty-websocket/websocket-common/pom.xml
+++ b/jetty-websocket/websocket-common/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStack.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStack.java
index c3e266e..29450cf 100644
--- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStack.java
+++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStack.java
@@ -251,19 +251,35 @@
{
StringBuilder s = new StringBuilder();
s.append("ExtensionStack[");
- s.append("extensions=[");
- boolean delim = false;
- for (Extension ext : extensions)
+ s.append("extensions=");
+ if (extensions == null)
{
- if (delim)
- {
- s.append(',');
- }
- s.append(ext.getName());
- delim = true;
+ s.append("<null>");
}
- s.append("],incoming=").append(this.nextIncoming.getClass().getName());
- s.append(",outgoing=").append(this.nextOutgoing.getClass().getName());
+ else
+ {
+ s.append('[');
+ boolean delim = false;
+ for (Extension ext : extensions)
+ {
+ if (delim)
+ {
+ s.append(',');
+ }
+ if (ext == null)
+ {
+ s.append("<null>");
+ }
+ else
+ {
+ s.append(ext.getName());
+ }
+ delim = true;
+ }
+ s.append(']');
+ }
+ s.append(",incoming=").append((this.nextIncoming == null)?"<null>":this.nextIncoming.getClass().getName());
+ s.append(",outgoing=").append((this.nextOutgoing == null)?"<null>":this.nextOutgoing.getClass().getName());
s.append("]");
return s.toString();
}
diff --git a/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStackTest.java b/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStackTest.java
index 8b2825a..096dc82 100644
--- a/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStackTest.java
+++ b/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStackTest.java
@@ -160,4 +160,12 @@
stack.stop();
}
}
+
+ @Test
+ public void testToString()
+ {
+ ExtensionStack stack = createExtensionStack();
+ // Shouldn't cause a NPE.
+ LOG.debug("Shouldn't cause a NPE: {}",stack.toString());
+ }
}
diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml
index 25b9506..a17191e 100644
--- a/jetty-websocket/websocket-server/pom.xml
+++ b/jetty-websocket/websocket-server/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index abe6ee6..9c5f225 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml
index d8a39e8..b3e283d 100644
--- a/jetty-xml/pom.xml
+++ b/jetty-xml/pom.xml
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-xml</artifactId>
diff --git a/pom.xml b/pom.xml
index 91afeb5..33384ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<version>20</version>
</parent>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<name>Jetty :: Project</name>
<url>${jetty.url}</url>
<packaging>pom</packaging>
diff --git a/tests/pom.xml b/tests/pom.xml
index 707898b..44f156e 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>org.eclipse.jetty.tests</groupId>
diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml
index e0da1c4..d9b484d 100644
--- a/tests/test-continuation/pom.xml
+++ b/tests/test-continuation/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml
index 99e5b6d..cf0e34c 100644
--- a/tests/test-loginservice/pom.xml
+++ b/tests/test-loginservice/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-loginservice</artifactId>
<name>Jetty Tests :: Login Service</name>
diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml
index dac1976..1d59cd9 100644
--- a/tests/test-sessions/pom.xml
+++ b/tests/test-sessions/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-sessions-parent</artifactId>
<name>Jetty Tests :: Sessions :: Parent</name>
diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml
index 5a52c04..446da47 100644
--- a/tests/test-sessions/test-hash-sessions/pom.xml
+++ b/tests/test-sessions/test-hash-sessions/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-hash-sessions</artifactId>
<name>Jetty Tests :: Sessions :: Hash</name>
diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml
index 46e03ba..1337d07 100644
--- a/tests/test-sessions/test-jdbc-sessions/pom.xml
+++ b/tests/test-sessions/test-jdbc-sessions/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-jdbc-sessions</artifactId>
<name>Jetty Tests :: Sessions :: JDBC</name>
diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml
index 7c7a8b6..f32cfbc 100644
--- a/tests/test-sessions/test-sessions-common/pom.xml
+++ b/tests/test-sessions/test-sessions-common/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-sessions-common</artifactId>
<name>Jetty Tests :: Sessions :: Common</name>
diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml
index f6ae886..60cd972 100644
--- a/tests/test-webapps/pom.xml
+++ b/tests/test-webapps/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>test-webapps-parent</artifactId>
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index fbffd7d..a743267 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-jaas-webapp</artifactId>
<name>Jetty Tests :: WebApp :: JAAS</name>
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index 6aae466..9da9751 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/tests/test-webapps/test-jetty-webapp/src/main/config/webapps/test.xml b/tests/test-webapps/test-jetty-webapp/src/main/config/webapps/test.xml
index 1bef8ab..ff7eb6b 100644
--- a/tests/test-webapps/test-jetty-webapp/src/main/config/webapps/test.xml
+++ b/tests/test-webapps/test-jetty-webapp/src/main/config/webapps/test.xml
@@ -45,7 +45,10 @@
<!-- virtual hosts
<Set name="virtualHosts">
<Array type="String">
- <Item>www.myVirtualDomain.com</Item>
+ <Item>www.MyVirtualDomain.com</Item>
+ <Item>m.MyVirtualDomain.com</Item>
+ <Item>*.OtherVirtualDomain.com</Item>
+ <Item>@ConnectorName</Item>
<Item>localhost</Item>
<Item>127.0.0.1</Item>
</Array>
diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml
index dd1a649..f6a62de 100644
--- a/tests/test-webapps/test-jndi-webapp/pom.xml
+++ b/tests/test-webapps/test-jndi-webapp/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-jndi-webapp</artifactId>
<name>Jetty Tests :: WebApp :: JNDI</name>
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index 010dd00..6714ae3 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<name>Jetty Tests :: WebApp :: Mock Resources</name>
<artifactId>test-mock-resources</artifactId>
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index 9aaf34d..8facf19 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -20,7 +20,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml
index 6c61e57..b36590c 100644
--- a/tests/test-webapps/test-servlet-spec/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-servlet-spec-parent</artifactId>
<name>Jetty Tests :: Spec Test WebApp :: Parent</name>
diff --git a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
index fe27436..603cdbe 100644
--- a/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-container-initializer</artifactId>
<packaging>jar</packaging>
diff --git a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
index 3ae3cc3..2572855 100644
--- a/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<name>Jetty Tests :: Webapps :: Spec Webapp</name>
<artifactId>test-spec-webapp</artifactId>
diff --git a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
index 3206a0b..ce89abd 100644
--- a/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<name>Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar</name>
<groupId>org.eclipse.jetty.tests</groupId>
diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml
index 0dd389f..f96b4c5 100644
--- a/tests/test-webapps/test-webapp-rfc2616/pom.xml
+++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.0.2-SNAPSHOT</version>
+ <version>9.0.3-SNAPSHOT</version>
</parent>
<artifactId>test-webapp-rfc2616</artifactId>
<name>Jetty Tests :: WebApp :: RFC2616</name>