From 45a5b9c8b968755a7b24bedabc02294281ff0211 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Mon, 13 May 2019 11:13:59 -0500
Subject: [PATCH 01/34] Adding TLS mode to websocket BrowserDebugTool.
Signed-off-by: Joakim Erdfelt
---
.../server/browser/BrowserDebugTool.java | 49 +++++++++++++++++--
1 file changed, 44 insertions(+), 5 deletions(-)
diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserDebugTool.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserDebugTool.java
index b0ae23f126d..a0b46bd4fa7 100644
--- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserDebugTool.java
+++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserDebugTool.java
@@ -21,14 +21,19 @@ package org.eclipse.jetty.websocket.server.browser;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig;
import org.eclipse.jetty.websocket.common.extensions.FrameDebugExtension;
-import org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension;
import org.eclipse.jetty.websocket.server.WebSocketHandler;
import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
@@ -44,10 +49,12 @@ import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
public class BrowserDebugTool implements WebSocketCreator
{
private static final Logger LOG = Log.getLogger(BrowserDebugTool.class);
+ private ServerConnector secureConnector;
public static void main(String[] args)
{
int port = 8080;
+ int securePort = 8443;
for (int i = 0; i < args.length; i++)
{
@@ -56,12 +63,17 @@ public class BrowserDebugTool implements WebSocketCreator
{
port = Integer.parseInt(args[++i]);
}
+
+ if ("-sP".equals(a) || "--securePort".equals(a))
+ {
+ securePort = Integer.parseInt(args[++i]);
+ }
}
try
{
BrowserDebugTool tool = new BrowserDebugTool();
- tool.prepare(port);
+ tool.prepare(port, securePort);
tool.start();
}
catch (Throwable t)
@@ -119,13 +131,39 @@ public class BrowserDebugTool implements WebSocketCreator
return connector.getLocalPort();
}
- public void prepare(int port)
+ public int getSecurePort()
+ {
+ return secureConnector.getLocalPort();
+ }
+
+ public void prepare(int port, int securePort)
{
server = new Server();
- connector = new ServerConnector(server);
+
+ HttpConfiguration httpConfiguration = new HttpConfiguration();
+ httpConfiguration.setSecureScheme("https");
+ httpConfiguration.setSecurePort(securePort);
+
+ connector = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration));
connector.setPort(port);
server.addConnector(connector);
+ SslContextFactory sslContextFactory = new SslContextFactory();
+ sslContextFactory.setKeyStorePath(MavenTestingUtils.getTestResourceFile("keystore").getAbsolutePath());
+ sslContextFactory.setKeyStorePassword("storepwd");
+ sslContextFactory.setKeyManagerPassword("keypwd");
+
+ // SSL HTTP Configuration
+ HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
+ httpsConfiguration.addCustomizer(new SecureRequestCustomizer());
+
+ // SSL Connector
+ secureConnector = new ServerConnector(server,
+ new SslConnectionFactory(sslContextFactory,"http/1.1"),
+ new HttpConnectionFactory(httpsConfiguration));
+ secureConnector.setPort(securePort);
+ server.addConnector(secureConnector);
+
WebSocketHandler wsHandler = new WebSocketHandler()
{
@Override
@@ -162,7 +200,8 @@ public class BrowserDebugTool implements WebSocketCreator
public void start() throws Exception
{
server.start();
- LOG.info("Server available on port {}",getPort());
+ LOG.info("Server available on port {}", getPort());
+ LOG.info("Server available on secure (TLS) port {}", getSecurePort());
}
public void stop() throws Exception
From e665c8f806406ca8c1d8fe37bee740c5b693aed3 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Thu, 24 Oct 2019 15:35:59 -0500
Subject: [PATCH 02/34] Issue #4217 - SslConnection DecryptedEndpoint flush
eternal busy loop
Signed-off-by: Joakim Erdfelt
---
.../jetty/client/HttpClientTLSTest.java | 131 +++++++++++-
.../test/resources/jetty-logging.properties | 1 +
.../eclipse/jetty/io/ssl/SslConnection.java | 186 ++++++++++++++----
3 files changed, 282 insertions(+), 36 deletions(-)
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
index d26d508556b..73328aa7722 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
@@ -23,13 +23,16 @@ import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
+import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
-
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSocket;
@@ -37,12 +40,20 @@ import org.eclipse.jetty.client.api.ContentResponse;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpScheme;
import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.ClientConnectionFactory;
+import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.io.ssl.SslClientConnectionFactory;
+import org.eclipse.jetty.io.ssl.SslConnection;
import org.eclipse.jetty.io.ssl.SslHandshakeListener;
+import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.hamcrest.Matchers;
@@ -50,6 +61,9 @@ import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
public class HttpClientTLSTest
{
private Server server;
@@ -516,4 +530,119 @@ public class HttpClientTLSTest
Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
}
}
+
+ @Test
+ public void testTLSLargeFragments() throws Exception
+ {
+ CountDownLatch serverLatch = new CountDownLatch(1);
+ SslContextFactory serverTLSFactory = createSslContextFactory();
+ QueuedThreadPool serverThreads = new QueuedThreadPool();
+ serverThreads.setName("server");
+ server = new Server(serverThreads);
+ HttpConfiguration httpConfig = new HttpConfiguration();
+ httpConfig.addCustomizer(new SecureRequestCustomizer());
+ HttpConnectionFactory http = new HttpConnectionFactory(httpConfig);
+ SslConnectionFactory ssl = new SslConnectionFactory(serverTLSFactory, http.getProtocol())
+ {
+ @Override
+ protected SslConnection newSslConnection(Connector connector, EndPoint endPoint, SSLEngine engine)
+ {
+ return new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption())
+ {
+ @Override
+ protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException
+ {
+ int inputBytes = input.remaining();
+ SSLEngineResult result = super.unwrap(sslEngine, input, output);
+ if (inputBytes == 5)
+ serverLatch.countDown();
+ return result;
+ }
+ };
+ }
+ };
+ connector = new ServerConnector(server, 1, 1, ssl, http);
+ server.addConnector(connector);
+ server.setHandler(new EmptyServerHandler());
+ server.start();
+
+ long idleTimeout = 2000;
+
+ CountDownLatch clientLatch = new CountDownLatch(1);
+ SslContextFactory clientTLSFactory = createSslContextFactory();
+ QueuedThreadPool clientThreads = new QueuedThreadPool();
+ clientThreads.setName("client");
+ client = new HttpClient(clientTLSFactory)
+ {
+ @Override
+ protected ClientConnectionFactory newSslClientConnectionFactory(ClientConnectionFactory connectionFactory)
+ {
+ SslContextFactory sslContextFactory = getSslContextFactory();
+ return new SslClientConnectionFactory(sslContextFactory, getByteBufferPool(), getExecutor(), connectionFactory)
+ {
+ @Override
+ protected SslConnection newSslConnection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, SSLEngine engine)
+ {
+ return new SslConnection(byteBufferPool, executor, endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption())
+ {
+ @Override
+ protected SSLEngineResult wrap(SSLEngine sslEngine, ByteBuffer[] input, ByteBuffer output) throws SSLException
+ {
+ try
+ {
+ clientLatch.countDown();
+ assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
+ return super.wrap(sslEngine, input, output);
+ }
+ catch (InterruptedException x)
+ {
+ throw new SSLException(x);
+ }
+ }
+ };
+ }
+ };
+ }
+ };
+ client.setIdleTimeout(idleTimeout);
+ client.setExecutor(clientThreads);
+ client.start();
+
+ String host = "localhost";
+ int port = connector.getLocalPort();
+
+ CountDownLatch responseLatch = new CountDownLatch(1);
+ client.newRequest(host, port)
+ .scheme(HttpScheme.HTTPS.asString())
+ .send(result ->
+ {
+ assertTrue(result.isSucceeded());
+ assertEquals(HttpStatus.OK_200, result.getResponse().getStatus());
+ responseLatch.countDown();
+ });
+ // Wait for the TLS buffers to be acquired by the client, then the
+ // HTTP request will be paused waiting for the TLS buffer to be expanded.
+ assertTrue(clientLatch.await(5, TimeUnit.SECONDS));
+
+ // Send the large frame bytes that will enlarge the TLS buffers.
+ try (Socket socket = new Socket(host, port))
+ {
+ OutputStream output = socket.getOutputStream();
+ byte[] largeFrameBytes = new byte[5];
+ largeFrameBytes[0] = 22; // Type = handshake
+ largeFrameBytes[1] = 3; // Major TLS version
+ largeFrameBytes[2] = 3; // Minor TLS version
+ // Frame length is 0x7FFF == 32767, i.e. a "large fragment".
+ // Maximum allowed by RFC 8446 is 16384, but SSLEngine supports up to 33093.
+ largeFrameBytes[3] = 0x7F; // Length hi byte
+ largeFrameBytes[4] = (byte)0xFF; // Length lo byte
+ output.write(largeFrameBytes);
+ output.flush();
+ // Just close the connection now, the large frame
+ // length was enough to trigger the buffer expansion.
+ }
+
+ // The HTTP request will resume and be forced to handle the TLS buffer expansion.
+ assertTrue(responseLatch.await(5, TimeUnit.SECONDS));
+ }
}
diff --git a/jetty-client/src/test/resources/jetty-logging.properties b/jetty-client/src/test/resources/jetty-logging.properties
index 1c19e5331e5..f5deb5cf206 100644
--- a/jetty-client/src/test/resources/jetty-logging.properties
+++ b/jetty-client/src/test/resources/jetty-logging.properties
@@ -1,3 +1,4 @@
org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
#org.eclipse.jetty.LEVEL=DEBUG
#org.eclipse.jetty.client.LEVEL=DEBUG
+#org.eclipse.jetty.io.ssl.LEVEL=DEBUG
\ No newline at end of file
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 dba066e2a1a..18e9c46d3ae 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
@@ -24,13 +24,14 @@ import java.nio.channels.ClosedChannelException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executor;
-
+import java.util.function.ToIntFunction;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLEngineResult.HandshakeStatus;
import javax.net.ssl.SSLEngineResult.Status;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLHandshakeException;
+import javax.net.ssl.SSLSession;
import org.eclipse.jetty.io.AbstractConnection;
import org.eclipse.jetty.io.AbstractEndPoint;
@@ -38,6 +39,7 @@ import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.io.EofException;
+import org.eclipse.jetty.io.RuntimeIOException;
import org.eclipse.jetty.io.SelectChannelEndPoint;
import org.eclipse.jetty.io.WriteFlusher;
import org.eclipse.jetty.util.BufferUtil;
@@ -212,6 +214,57 @@ public class SslConnection extends AbstractConnection
this._allowMissingCloseMessage = allowMissingCloseMessage;
}
+ private int getApplicationBufferSize()
+ {
+ return getBufferSize(SSLSession::getApplicationBufferSize);
+ }
+
+ private int getPacketBufferSize()
+ {
+ return getBufferSize(SSLSession::getPacketBufferSize);
+ }
+
+ private int getBufferSize(ToIntFunction bufferSizeFn)
+ {
+ SSLSession hsSession = _sslEngine.getHandshakeSession();
+ SSLSession session = _sslEngine.getSession();
+ int size = bufferSizeFn.applyAsInt(session);
+ if (hsSession == null || hsSession == session)
+ return size;
+ int hsSize = bufferSizeFn.applyAsInt(hsSession);
+ return Math.max(hsSize, size);
+ }
+
+ private void acquireEncryptedInput()
+ {
+ if (_encryptedInput == null)
+ _encryptedInput = _bufferPool.acquire(getPacketBufferSize(), _encryptedDirectBuffers);
+ }
+
+ private void acquireEncryptedOutput()
+ {
+ if (_encryptedOutput == null)
+ _encryptedOutput = _bufferPool.acquire(getPacketBufferSize(), _encryptedDirectBuffers);
+ }
+
+ private void releaseEncryptedInputBuffer()
+ {
+ if (_encryptedInput != null && !_encryptedInput.hasRemaining())
+ {
+ _bufferPool.release(_encryptedInput);
+ _encryptedInput = null;
+ }
+ }
+
+ protected void releaseDecryptedInputBuffer()
+ {
+ if (_decryptedInput != null && !_decryptedInput.hasRemaining())
+ {
+ _bufferPool.release(_decryptedInput);
+ _decryptedInput = null;
+ }
+ }
+
@Override
public void onOpen()
{
@@ -298,6 +351,16 @@ public class SslConnection extends AbstractConnection
_decryptedEndPoint.getWriteFlusher().onFail(cause);
}
+ protected SSLEngineResult wrap(SSLEngine sslEngine, ByteBuffer[] input, ByteBuffer output) throws SSLException
+ {
+ return sslEngine.wrap(input, output);
+ }
+
+ protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException
+ {
+ return sslEngine.unwrap(input, output);
+ }
+
@Override
public String toString()
{
@@ -540,9 +603,12 @@ public class SslConnection extends AbstractConnection
{
if (connection instanceof AbstractConnection)
{
- AbstractConnection a = (AbstractConnection)connection;
- if (a.getInputBufferSize()<_sslEngine.getSession().getApplicationBufferSize())
- a.setInputBufferSize(_sslEngine.getSession().getApplicationBufferSize());
+ // This is an optimization to avoid that upper layer connections use small
+ // buffers and we need to copy decrypted data rather than decrypting in place.
+ AbstractConnection c = (AbstractConnection)connection;
+ int appBufferSize = getApplicationBufferSize();
+ if (c.getInputBufferSize() < appBufferSize)
+ c.setInputBufferSize(appBufferSize);
}
super.setConnection(connection);
}
@@ -572,18 +638,22 @@ public class SslConnection extends AbstractConnection
else
BufferUtil.compact(_encryptedInput);
- // We also need an app buffer, but can use the passed buffer if it is big enough
- ByteBuffer app_in;
- if (BufferUtil.space(buffer) > _sslEngine.getSession().getApplicationBufferSize())
- app_in = buffer;
- else if (_decryptedInput == null)
- app_in = _decryptedInput = _bufferPool.acquire(_sslEngine.getSession().getApplicationBufferSize(), _decryptedDirectBuffers);
- else
- app_in = _decryptedInput;
// loop filling and unwrapping until we have something
while (true)
{
+ // We also need an app buffer, but can use the passed buffer if it is big enough
+ ByteBuffer app_in;
+ int appBufferSize = getApplicationBufferSize();
+ if (BufferUtil.space(buffer) > appBufferSize)
+ app_in = buffer;
+ else if (_decryptedInput == null)
+ app_in = _decryptedInput = _bufferPool.acquire(appBufferSize, _decryptedDirectBuffers);
+ else
+ app_in = _decryptedInput;
+
+ acquireEncryptedInput();
+
// Let's try reading some encrypted data... even if we have some already.
int net_filled = getEndPoint().fill(_encryptedInput);
@@ -598,17 +668,20 @@ public class SslConnection extends AbstractConnection
SSLEngineResult unwrapResult;
try
{
- unwrapResult = _sslEngine.unwrap(_encryptedInput, app_in);
+ unwrapResult = unwrap(_sslEngine, _encryptedInput, app_in);
}
finally
{
BufferUtil.flipToFlush(app_in, pos);
}
+
if (LOG.isDebugEnabled())
- {
- LOG.debug("net={} unwrap {} {}", net_filled, unwrapResult.toString().replace('\n',' '), SslConnection.this);
- LOG.debug("filled {} {}",BufferUtil.toHexSummary(buffer), SslConnection.this);
- }
+ LOG.debug("unwrap net_filled={} {} encryptedBuffer={} unwrapBuffer={} appBuffer={}",
+ net_filled,
+ unwrapResult.toString().replace('\n',' '),
+ BufferUtil.toSummaryString(_encryptedInput),
+ BufferUtil.toDetailString(app_in),
+ BufferUtil.toDetailString(buffer));
HandshakeStatus handshakeStatus = _sslEngine.getHandshakeStatus();
HandshakeStatus unwrapHandshakeStatus = unwrapResult.getHandshakeStatus();
@@ -662,7 +735,41 @@ public class SslConnection extends AbstractConnection
}
}
}
+ case BUFFER_OVERFLOW:
+ // It's possible that SSLSession.applicationBufferSize has been expanded
+ // by the SSLEngine implementation. Unwrapping a large encrypted buffer
+ // causes BUFFER_OVERFLOW because the (old) applicationBufferSize is
+ // too small. Release the decrypted input buffer so it will be re-acquired
+ // with the larger capacity.
+ // See also system property "jsse.SSLEngine.acceptLargeFragments".
+ if (BufferUtil.isEmpty(_decryptedInput) && appBufferSize < getApplicationBufferSize())
+ {
+ releaseDecryptedInputBuffer();
+ break decryption;
+ }
+ throw new IllegalStateException("Unexpected unwrap result " + unwrapResultStatus);
+
case BUFFER_UNDERFLOW:
+ if (net_filled > 0)
+ break decryption; // try filling some more
+ _underFlown = true;
+ if (net_filled < 0 && _sslEngine.getUseClientMode())
+ {
+ try
+ {
+ closeInbound();
+ }
+ catch (SSLException closeFailure)
+ {
+ Throwable handshakeFailure = new SSLHandshakeException("Abruptly closed by peer");
+ if (closeFailure != null)
+ handshakeFailure.initCause(closeFailure);
+ throw handshakeFailure;
+ }
+
+ return -1;
+ }
+ return net_filled;
case OK:
{
if (unwrapHandshakeStatus == HandshakeStatus.FINISHED)
@@ -671,7 +778,7 @@ public class SslConnection extends AbstractConnection
// Check whether re-negotiation is allowed
if (!allowRenegotiate(handshakeStatus))
return -1;
-
+
// If bytes were produced, don't bother with the handshake status;
// pass the decrypted data to the application, which will perform
// another call to fill() or flush().
@@ -769,23 +876,17 @@ public class SslConnection extends AbstractConnection
getExecutor().execute(failure == null ? _runCompletWrite : new FailWrite(failure));
}
- if (_encryptedInput != null && !_encryptedInput.hasRemaining())
- {
- _bufferPool.release(_encryptedInput);
- _encryptedInput = null;
- }
- if (_decryptedInput != null && !_decryptedInput.hasRemaining())
- {
- _bufferPool.release(_decryptedInput);
- _decryptedInput = null;
- }
+ releaseEncryptedInputBuffer();
+ releaseDecryptedInputBuffer();
}
}
}
catch (Throwable x)
{
close(x);
- throw x;
+ if(x instanceof IOException)
+ throw (IOException) x;
+ throw new RuntimeIOException(x);
}
}
@@ -895,19 +996,19 @@ public class SslConnection extends AbstractConnection
return false;
}
- // We will need a network buffer
- if (_encryptedOutput == null)
- _encryptedOutput = _bufferPool.acquire(_sslEngine.getSession().getPacketBufferSize(), _encryptedDirectBuffers);
-
while (true)
{
- // We call sslEngine.wrap to try to take bytes from appOut buffers and encrypt them into the _netOut buffer
+ int packetBufferSize = getPacketBufferSize();
+ acquireEncryptedOutput();
+
+ // We call sslEngine.wrap to try to take bytes from appOuts
+ // buffers and encrypt them into the _encryptedOutput buffer.
BufferUtil.compact(_encryptedOutput);
int pos = BufferUtil.flipToFill(_encryptedOutput);
SSLEngineResult wrapResult;
try
{
- wrapResult = _sslEngine.wrap(appOuts, _encryptedOutput);
+ wrapResult = wrap(_sslEngine, appOuts,_encryptedOutput);
}
finally
{
@@ -948,6 +1049,21 @@ public class SslConnection extends AbstractConnection
}
return allConsumed;
}
+ case BUFFER_OVERFLOW:
+ {
+ // It's possible that SSLSession.packetBufferSize has been expanded
+ // by the SSLEngine implementation. Wrapping a large application buffer
+ // causes BUFFER_OVERFLOW because the (old) packetBufferSize is
+ // too small. Release the encrypted output buffer so that it will
+ // be re-acquired with the larger capacity.
+ // See also system property "jsse.SSLEngine.acceptLargeFragments".
+ if (packetBufferSize < getPacketBufferSize())
+ {
+ releaseEncryptedOutputBuffer();
+ continue;
+ }
+ throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
+ }
case BUFFER_UNDERFLOW:
{
throw new IllegalStateException();
From 93a5ff0b8912e236b74aef041b03a820e5001cb9 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Fri, 25 Oct 2019 16:41:26 -0500
Subject: [PATCH 03/34] Issue #4217 - SslConnection DecryptedEndpoint flush
eternal busy loop
+ Small cleanup of duplicate if statements
Signed-off-by: Joakim Erdfelt
---
.../eclipse/jetty/io/ssl/SslConnection.java | 21 +------------------
1 file changed, 1 insertion(+), 20 deletions(-)
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 18e9c46d3ae..88e95e8fef4 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
@@ -692,14 +692,6 @@ public class SslConnection extends AbstractConnection
_underFlown = unwrapResultStatus == Status.BUFFER_UNDERFLOW ||
unwrapResultStatus == Status.OK && unwrapResult.bytesConsumed() == 0 && unwrapResult.bytesProduced() == 0;
- if (_underFlown)
- {
- if (net_filled < 0 && _sslEngine.getUseClientMode())
- closeInbound();
- if (net_filled <= 0)
- return net_filled;
- }
-
switch (unwrapResultStatus)
{
case CLOSED:
@@ -707,32 +699,22 @@ public class SslConnection extends AbstractConnection
switch (handshakeStatus)
{
case NOT_HANDSHAKING:
- {
// We were not handshaking, so just tell the app we are closed
return -1;
- }
case NEED_TASK:
- {
_sslEngine.getDelegatedTask().run();
continue;
- }
case NEED_WRAP:
- {
// We need to send some handshake data (probably the close handshake).
// We return -1 so that the application can drive the close by flushing
// or shutting down the output.
return -1;
- }
case NEED_UNWRAP:
- {
// We expected to read more, but we got closed.
// Return -1 to indicate to the application to drive the close.
return -1;
- }
default:
- {
throw new IllegalStateException();
- }
}
}
case BUFFER_OVERFLOW:
@@ -762,8 +744,7 @@ public class SslConnection extends AbstractConnection
catch (SSLException closeFailure)
{
Throwable handshakeFailure = new SSLHandshakeException("Abruptly closed by peer");
- if (closeFailure != null)
- handshakeFailure.initCause(closeFailure);
+ handshakeFailure.initCause(closeFailure);
throw handshakeFailure;
}
From c58fd58e41f8b38208bd041853d64e7f639e1e0f Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 29 Oct 2019 19:14:07 -0500
Subject: [PATCH 04/34] Testing Large TLS Records for Jetty 9.2.x
Signed-off-by: Joakim Erdfelt
---
.../jetty/client/HttpClientTLSTest.java | 155 ++++++++++++++++++
.../eclipse/jetty/io/ssl/SslConnection.java | 15 +-
2 files changed, 167 insertions(+), 3 deletions(-)
diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
index fe4de6bfe34..2aa21e9fba6 100644
--- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java
@@ -18,19 +18,45 @@
package org.eclipse.jetty.client;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLEngineResult;
+import javax.net.ssl.SSLException;
+import org.eclipse.jetty.client.api.Response;
+import org.eclipse.jetty.client.api.Result;
+import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
+import org.eclipse.jetty.client.http.HttpDestinationOverHTTP;
import org.eclipse.jetty.http.HttpScheme;
+import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.jetty.io.ByteBufferPool;
+import org.eclipse.jetty.io.ClientConnectionFactory;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.ssl.SslClientConnectionFactory;
+import org.eclipse.jetty.io.ssl.SslConnection;
+import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
public class HttpClientTLSTest
{
private Server server;
@@ -180,4 +206,133 @@ public class HttpClientTLSTest
// Expected.
}
}
+
+ @Test
+ public void testTLSLargeFragments() throws Exception
+ {
+ final CountDownLatch serverLatch = new CountDownLatch(1);
+ SslContextFactory serverTLSFactory = createSslContextFactory();
+ QueuedThreadPool serverThreads = new QueuedThreadPool();
+ serverThreads.setName("server");
+ server = new Server(serverThreads);
+ HttpConfiguration httpConfig = new HttpConfiguration();
+ httpConfig.addCustomizer(new SecureRequestCustomizer());
+ HttpConnectionFactory http = new HttpConnectionFactory(httpConfig);
+ SslConnectionFactory ssl = new SslConnectionFactory(serverTLSFactory, http.getProtocol())
+ {
+ @Override
+ protected SslConnection newSslConnection(Connector connector, EndPoint endPoint, SSLEngine engine)
+ {
+ return new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption())
+ {
+ @Override
+ protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException
+ {
+ int inputBytes = input.remaining();
+ SSLEngineResult result = super.unwrap(sslEngine, input, output);
+ if (inputBytes == 5)
+ serverLatch.countDown();
+ return result;
+ }
+ };
+ }
+ };
+ connector = new ServerConnector(server, 1, 1, ssl, http);
+ server.addConnector(connector);
+ server.setHandler(new EmptyServerHandler());
+ server.start();
+
+ long idleTimeout = 2000;
+
+ final CountDownLatch clientLatch = new CountDownLatch(1);
+ final SslContextFactory clientTLSFactory = createSslContextFactory();
+ QueuedThreadPool clientThreads = new QueuedThreadPool();
+ clientThreads.setName("client");
+ client = new HttpClient(
+ new HttpClientTransportOverHTTP()
+ {
+ @Override
+ public HttpDestination newHttpDestination(Origin origin)
+ {
+ return new HttpDestinationOverHTTP(getHttpClient(), origin)
+ {
+ @Override
+ protected ClientConnectionFactory newSslClientConnectionFactory(ClientConnectionFactory connectionFactory)
+ {
+ SslContextFactory sslContextFactory = getHttpClient().getSslContextFactory();
+ ByteBufferPool bufferPool = getHttpClient().getByteBufferPool();
+ Executor executor = getHttpClient().getExecutor();
+ return new SslClientConnectionFactory(sslContextFactory, bufferPool, executor, connectionFactory)
+ {
+ @Override
+ protected SslConnection newSslConnection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, SSLEngine engine)
+ {
+ return new SslConnection(byteBufferPool, executor, endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption())
+ {
+ @Override
+ protected SSLEngineResult wrap(SSLEngine sslEngine, ByteBuffer[] input, ByteBuffer output) throws SSLException
+ {
+ try
+ {
+ clientLatch.countDown();
+ assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
+ return super.wrap(sslEngine, input, output);
+ }
+ catch (InterruptedException x)
+ {
+ throw new SSLException(x);
+ }
+ }
+ };
+ }
+ };
+ }
+ };
+ }
+ }, clientTLSFactory);
+ client.setIdleTimeout(idleTimeout);
+ client.setExecutor(clientThreads);
+ client.start();
+
+ String host = "localhost";
+ int port = connector.getLocalPort();
+
+ final CountDownLatch responseLatch = new CountDownLatch(1);
+ client.newRequest(host, port)
+ .scheme(HttpScheme.HTTPS.asString())
+ .send(new Response.CompleteListener()
+ {
+ public void onComplete(Result result)
+ {
+ assertTrue(result.isSucceeded());
+ assertEquals(HttpStatus.OK_200, result.getResponse().getStatus());
+ responseLatch.countDown();
+ }
+ }
+ );
+ // Wait for the TLS buffers to be acquired by the client, then the
+ // HTTP request will be paused waiting for the TLS buffer to be expanded.
+ assertTrue(clientLatch.await(5, TimeUnit.SECONDS));
+
+ // Send the large frame bytes that will enlarge the TLS buffers.
+ try (Socket socket = new Socket(host, port))
+ {
+ OutputStream output = socket.getOutputStream();
+ byte[] largeFrameBytes = new byte[5];
+ largeFrameBytes[0] = 22; // Type = handshake
+ largeFrameBytes[1] = 3; // Major TLS version
+ largeFrameBytes[2] = 3; // Minor TLS version
+ // Frame length is 0x7FFF == 32767, i.e. a "large fragment".
+ // Maximum allowed by RFC 8446 is 16384, but SSLEngine supports up to 33093.
+ largeFrameBytes[3] = 0x7F; // Length hi byte
+ largeFrameBytes[4] = (byte)0xFF; // Length lo byte
+ output.write(largeFrameBytes);
+ output.flush();
+ // Just close the connection now, the large frame
+ // length was enough to trigger the buffer expansion.
+ }
+
+ // The HTTP request will resume and be forced to handle the TLS buffer expansion.
+ assertTrue(responseLatch.await(5, TimeUnit.SECONDS));
+ }
}
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 9cb3cf94bda..819e41b4865 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
@@ -23,7 +23,6 @@ import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.util.Arrays;
import java.util.concurrent.Executor;
-
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLEngineResult.HandshakeStatus;
@@ -230,6 +229,16 @@ public class SslConnection extends AbstractConnection
_decryptedEndPoint.getWriteFlusher().onFail(cause);
}
+ protected SSLEngineResult wrap(SSLEngine sslEngine, ByteBuffer[] input, ByteBuffer output) throws SSLException
+ {
+ return sslEngine.wrap(input, output);
+ }
+
+ protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException
+ {
+ return sslEngine.unwrap(input, output);
+ }
+
@Override
public String toString()
{
@@ -525,7 +534,7 @@ public class SslConnection extends AbstractConnection
SSLEngineResult unwrapResult;
try
{
- unwrapResult = _sslEngine.unwrap(_encryptedInput, app_in);
+ unwrapResult = unwrap(_sslEngine, _encryptedInput, app_in);
}
finally
{
@@ -757,7 +766,7 @@ public class SslConnection extends AbstractConnection
SSLEngineResult wrapResult;
try
{
- wrapResult=_sslEngine.wrap(appOuts, _encryptedOutput);
+ wrapResult = wrap(_sslEngine, appOuts, _encryptedOutput);
}
finally
{
From e137ee3cd7eed6972497d150a65d7949ab2f7a75 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 14:03:16 -0500
Subject: [PATCH 05/34] Issue #4217 - SslConnection DecryptedEndpoint flush
eternal busy loop
+ Cleanup from review
Signed-off-by: Joakim Erdfelt
---
.../jetty/client/ssl/SslBytesClientTest.java | 5 +++-
.../eclipse/jetty/io/ssl/SslConnection.java | 28 ++++++-------------
2 files changed, 13 insertions(+), 20 deletions(-)
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 83684dd8397..1c027ea0c23 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
@@ -30,7 +30,6 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
-
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLSocket;
@@ -41,10 +40,12 @@ import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.client.util.FutureResponseListener;
import org.eclipse.jetty.http.HttpScheme;
import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.jetty.toolchain.test.JDK;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.junit.After;
import org.junit.Assert;
+import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;
@@ -59,6 +60,8 @@ public class SslBytesClientTest extends SslBytesTest
@Before
public void init() throws Exception
{
+ // Disable for JDK 9 and above.
+ Assume.assumeFalse(JDK.IS_9);
threadPool = Executors.newCachedThreadPool();
client = new HttpClient(new SslContextFactory(true));
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 88e95e8fef4..b9fde82aa6a 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
@@ -645,6 +645,7 @@ public class SslConnection extends AbstractConnection
// We also need an app buffer, but can use the passed buffer if it is big enough
ByteBuffer app_in;
int appBufferSize = getApplicationBufferSize();
+
if (BufferUtil.space(buffer) > appBufferSize)
app_in = buffer;
else if (_decryptedInput == null)
@@ -692,6 +693,14 @@ public class SslConnection extends AbstractConnection
_underFlown = unwrapResultStatus == Status.BUFFER_UNDERFLOW ||
unwrapResultStatus == Status.OK && unwrapResult.bytesConsumed() == 0 && unwrapResult.bytesProduced() == 0;
+ if (_underFlown)
+ {
+ if (net_filled < 0 && _sslEngine.getUseClientMode())
+ closeInbound();
+ if (net_filled <= 0)
+ return net_filled;
+ }
+
switch (unwrapResultStatus)
{
case CLOSED:
@@ -732,25 +741,6 @@ public class SslConnection extends AbstractConnection
throw new IllegalStateException("Unexpected unwrap result " + unwrapResultStatus);
case BUFFER_UNDERFLOW:
- if (net_filled > 0)
- break decryption; // try filling some more
- _underFlown = true;
- if (net_filled < 0 && _sslEngine.getUseClientMode())
- {
- try
- {
- closeInbound();
- }
- catch (SSLException closeFailure)
- {
- Throwable handshakeFailure = new SSLHandshakeException("Abruptly closed by peer");
- handshakeFailure.initCause(closeFailure);
- throw handshakeFailure;
- }
-
- return -1;
- }
- return net_filled;
case OK:
{
if (unwrapHandshakeStatus == HandshakeStatus.FINISHED)
From 737144a35e80911fbb9264f5a0ff137f32447065 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 15:29:20 -0500
Subject: [PATCH 06/34] Issue #4217 - Allowing Large TLS Records in Java 11+ in
Jetty 9.2.x
Signed-off-by: Joakim Erdfelt
---
.../eclipse/jetty/io/ssl/SslConnection.java | 147 ++++++++++++++----
1 file changed, 117 insertions(+), 30 deletions(-)
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 819e41b4865..3d8f1414e25 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
@@ -28,6 +28,7 @@ import javax.net.ssl.SSLEngineResult;
import javax.net.ssl.SSLEngineResult.HandshakeStatus;
import javax.net.ssl.SSLEngineResult.Status;
import javax.net.ssl.SSLException;
+import javax.net.ssl.SSLSession;
import org.eclipse.jetty.io.AbstractConnection;
import org.eclipse.jetty.io.AbstractEndPoint;
@@ -142,6 +143,57 @@ public class SslConnection extends AbstractConnection
this._renegotiationAllowed = renegotiationAllowed;
}
+ private int getApplicationBufferSize()
+ {
+ SSLSession hsSession = _sslEngine.getHandshakeSession();
+ SSLSession session = _sslEngine.getSession();
+ int size = session.getApplicationBufferSize();
+ if (hsSession == null || hsSession == session)
+ return size;
+ int hsSize = hsSession.getApplicationBufferSize();
+ return Math.max(hsSize, size);
+ }
+
+ private int getPacketBufferSize()
+ {
+ SSLSession hsSession = _sslEngine.getHandshakeSession();
+ SSLSession session = _sslEngine.getSession();
+ int size = session.getPacketBufferSize();
+ if (hsSession == null || hsSession == session)
+ return size;
+ int hsSize = hsSession.getPacketBufferSize();
+ return Math.max(hsSize, size);
+ }
+
+ private void acquireEncryptedInput()
+ {
+ if (_encryptedInput == null)
+ _encryptedInput = _bufferPool.acquire(getPacketBufferSize(), _encryptedDirectBuffers);
+ }
+
+ private void acquireEncryptedOutput()
+ {
+ if (_encryptedOutput == null)
+ _encryptedOutput = _bufferPool.acquire(getPacketBufferSize(), _encryptedDirectBuffers);
+ }
+
+ private void releaseEncryptedInputBuffer()
+ {
+ if (_encryptedInput != null && !_encryptedInput.hasRemaining())
+ {
+ _bufferPool.release(_encryptedInput);
+ _encryptedInput = null;
+ }
+ }
+
+ protected void releaseDecryptedInputBuffer()
+ {
+ if (_decryptedInput != null && !_decryptedInput.hasRemaining())
+ {
+ _bufferPool.release(_decryptedInput);
+ _decryptedInput = null;
+ }
+ }
@Override
public void onOpen()
{
@@ -480,9 +532,12 @@ public class SslConnection extends AbstractConnection
{
if (connection instanceof AbstractConnection)
{
- AbstractConnection a = (AbstractConnection)connection;
- if (a.getInputBufferSize()<_sslEngine.getSession().getApplicationBufferSize())
- a.setInputBufferSize(_sslEngine.getSession().getApplicationBufferSize());
+ // This is an optimization to avoid that upper layer connections use small
+ // buffers and we need to copy decrypted data rather than decrypting in place.
+ AbstractConnection c = (AbstractConnection)connection;
+ int appBufferSize = getApplicationBufferSize();
+ if (c.getInputBufferSize() < appBufferSize)
+ c.setInputBufferSize(appBufferSize);
}
super.setConnection(connection);
}
@@ -509,18 +564,22 @@ public class SslConnection extends AbstractConnection
else
BufferUtil.compact(_encryptedInput);
- // We also need an app buffer, but can use the passed buffer if it is big enough
- ByteBuffer app_in;
- if (BufferUtil.space(buffer) > _sslEngine.getSession().getApplicationBufferSize())
- app_in = buffer;
- else if (_decryptedInput == null)
- app_in = _decryptedInput = _bufferPool.acquire(_sslEngine.getSession().getApplicationBufferSize(), _decryptedDirectBuffers);
- else
- app_in = _decryptedInput;
-
// loop filling and unwrapping until we have something
while (true)
{
+ // We also need an app buffer, but can use the passed buffer if it is big enough
+ ByteBuffer app_in;
+ int appBufferSize = getApplicationBufferSize();
+
+ if (BufferUtil.space(buffer) > appBufferSize)
+ app_in = buffer;
+ else if (_decryptedInput == null)
+ app_in = _decryptedInput = _bufferPool.acquire(appBufferSize, _decryptedDirectBuffers);
+ else
+ app_in = _decryptedInput;
+
+ acquireEncryptedInput();
+
// Let's try reading some encrypted data... even if we have some already.
int net_filled = getEndPoint().fill(_encryptedInput);
if (DEBUG)
@@ -540,8 +599,13 @@ public class SslConnection extends AbstractConnection
{
BufferUtil.flipToFlush(app_in, pos);
}
- if (DEBUG)
- LOG.debug("{} unwrap {}", SslConnection.this, unwrapResult);
+ if (LOG.isDebugEnabled())
+ LOG.debug("unwrap net_filled={} {} encryptedBuffer={} unwrapBuffer={} appBuffer={}",
+ net_filled,
+ unwrapResult.toString().replace('\n',' '),
+ BufferUtil.toSummaryString(_encryptedInput),
+ BufferUtil.toDetailString(app_in),
+ BufferUtil.toDetailString(buffer));
HandshakeStatus handshakeStatus = _sslEngine.getHandshakeStatus();
HandshakeStatus unwrapHandshakeStatus = unwrapResult.getHandshakeStatus();
@@ -594,6 +658,19 @@ public class SslConnection extends AbstractConnection
}
}
}
+ case BUFFER_OVERFLOW:
+ // It's possible that SSLSession.applicationBufferSize has been expanded
+ // by the SSLEngine implementation. Unwrapping a large encrypted buffer
+ // causes BUFFER_OVERFLOW because the (old) applicationBufferSize is
+ // too small. Release the decrypted input buffer so it will be re-acquired
+ // with the larger capacity.
+ // See also system property "jsse.SSLEngine.acceptLargeFragments".
+ if (BufferUtil.isEmpty(_decryptedInput) && appBufferSize < getApplicationBufferSize())
+ {
+ releaseDecryptedInputBuffer();
+ break decryption;
+ }
+ throw new IllegalStateException("Unexpected unwrap result " + unwrapResultStatus);
case BUFFER_UNDERFLOW:
case OK:
{
@@ -693,16 +770,9 @@ public class SslConnection extends AbstractConnection
getExecutor().execute(_runCompletWrite);
}
- if (_encryptedInput != null && !_encryptedInput.hasRemaining())
- {
- _bufferPool.release(_encryptedInput);
- _encryptedInput = null;
- }
- if (_decryptedInput != null && !_decryptedInput.hasRemaining())
- {
- _bufferPool.release(_decryptedInput);
- _decryptedInput = null;
- }
+ releaseEncryptedInputBuffer();
+ releaseDecryptedInputBuffer();
+
if (DEBUG)
LOG.debug("{} fill exit", SslConnection.this);
}
@@ -754,19 +824,20 @@ public class SslConnection extends AbstractConnection
return false;
}
- // We will need a network buffer
- if (_encryptedOutput == null)
- _encryptedOutput = _bufferPool.acquire(_sslEngine.getSession().getPacketBufferSize(), _encryptedDirectBuffers);
-
while (true)
{
- // We call sslEngine.wrap to try to take bytes from appOut buffers and encrypt them into the _netOut buffer
+ int packetBufferSize = getPacketBufferSize();
+ acquireEncryptedOutput();
+
+ // We call sslEngine.wrap to try to take bytes from appOuts
+ // buffers and encrypt them into the _encryptedOutput buffer.
+
BufferUtil.compact(_encryptedOutput);
int pos = BufferUtil.flipToFill(_encryptedOutput);
SSLEngineResult wrapResult;
try
{
- wrapResult = wrap(_sslEngine, appOuts, _encryptedOutput);
+ wrapResult = wrap(_sslEngine, appOuts,_encryptedOutput);
}
finally
{
@@ -808,6 +879,22 @@ public class SslConnection extends AbstractConnection
}
return allConsumed;
+ case BUFFER_OVERFLOW:
+ {
+ // It's possible that SSLSession.packetBufferSize has been expanded
+ // by the SSLEngine implementation. Wrapping a large application buffer
+ // causes BUFFER_OVERFLOW because the (old) packetBufferSize is
+ // too small. Release the encrypted output buffer so that it will
+ // be re-acquired with the larger capacity.
+ // See also system property "jsse.SSLEngine.acceptLargeFragments".
+ if (packetBufferSize < getPacketBufferSize())
+ {
+ releaseEncryptedOutputBuffer();
+ continue;
+ }
+ throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
+ }
+
case BUFFER_UNDERFLOW:
throw new IllegalStateException();
From c04997f7e0aeffed0fc05a0ce1b0ebe8ea3a10cc Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 17:05:46 -0500
Subject: [PATCH 07/34] Issue #4217 - SslConnection DecryptedEndpoint flush
eternal busy loop
+ Flush on BUFFER_OVERFLOW
Signed-off-by: Joakim Erdfelt
---
.../org/eclipse/jetty/io/ssl/SslConnection.java | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
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 b9fde82aa6a..ddf2be5924d 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
@@ -1020,6 +1020,10 @@ public class SslConnection extends AbstractConnection
}
return allConsumed;
}
+ case BUFFER_UNDERFLOW:
+ {
+ throw new IllegalStateException();
+ }
case BUFFER_OVERFLOW:
{
// It's possible that SSLSession.packetBufferSize has been expanded
@@ -1033,11 +1037,14 @@ public class SslConnection extends AbstractConnection
releaseEncryptedOutputBuffer();
continue;
}
- throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
- }
- case BUFFER_UNDERFLOW:
- {
- throw new IllegalStateException();
+ if (BufferUtil.isEmpty(_encryptedOutput))
+ {
+ throw new IllegalStateException(
+ String.format("Unexpected wrap result %s (packetBufferSize %d < getPacketBufferSize() %d)",
+ wrapResultStatus, packetBufferSize, getPacketBufferSize()
+ ));
+ }
+ // fall-through default case to flush()
}
default:
{
From c980e3dd3424a4b2a1748ca2eae03e0d0e096010 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 17:18:03 -0500
Subject: [PATCH 08/34] Fixing compilation issue
Signed-off-by: Joakim Erdfelt
---
.../eclipse/jetty/websocket/server/WebSocketProtocolTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketProtocolTest.java b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketProtocolTest.java
index 5500495dcb8..63648a5894a 100644
--- a/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketProtocolTest.java
+++ b/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketProtocolTest.java
@@ -40,7 +40,7 @@ public class WebSocketProtocolTest
public void startServer() throws Exception
{
server = new BrowserDebugTool();
- server.prepare(0);
+ server.prepare(0, 0);
server.start();
}
From f7ab02a5d1d453f5b47aa4e4a184530035fc9a94 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 17:21:59 -0500
Subject: [PATCH 09/34] Issue #4217 - Fixing OVERFLOW case to allow flush()
Signed-off-by: Joakim Erdfelt
---
.../java/org/eclipse/jetty/io/ssl/SslConnection.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
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 3d8f1414e25..905ab7b592b 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
@@ -879,6 +879,9 @@ public class SslConnection extends AbstractConnection
}
return allConsumed;
+ case BUFFER_UNDERFLOW:
+ throw new IllegalStateException();
+
case BUFFER_OVERFLOW:
{
// It's possible that SSLSession.packetBufferSize has been expanded
@@ -892,12 +895,13 @@ public class SslConnection extends AbstractConnection
releaseEncryptedOutputBuffer();
continue;
}
- throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
+ if (BufferUtil.isEmpty(_encryptedOutput))
+ {
+ throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
+ }
+ // fall-through default case to flush()
}
- case BUFFER_UNDERFLOW:
- throw new IllegalStateException();
-
default:
if (DEBUG)
LOG.debug("{} {} {}", this, wrapResultStatus, BufferUtil.toDetailString(_encryptedOutput));
From a3f3612fb4c408b2fad72f23d5c618b719b533ee Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 30 Oct 2019 17:23:08 -0500
Subject: [PATCH 10/34] Issue #4217 - Reverting debug output in
IllegalStateException
Signed-off-by: Joakim Erdfelt
---
.../main/java/org/eclipse/jetty/io/ssl/SslConnection.java | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
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 ddf2be5924d..1f8d2a93118 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
@@ -1039,10 +1039,7 @@ public class SslConnection extends AbstractConnection
}
if (BufferUtil.isEmpty(_encryptedOutput))
{
- throw new IllegalStateException(
- String.format("Unexpected wrap result %s (packetBufferSize %d < getPacketBufferSize() %d)",
- wrapResultStatus, packetBufferSize, getPacketBufferSize()
- ));
+ throw new IllegalStateException("Unexpected wrap result " + wrapResultStatus);
}
// fall-through default case to flush()
}
From e9a8497936a8eaebe8f694988d03bc419922d52f Mon Sep 17 00:00:00 2001
From: Jan Bartel
Date: Mon, 4 Nov 2019 17:53:05 +1100
Subject: [PATCH 11/34] Issue #4173 Avoid NPE generating name of tmp dir in
WebInfConfiguration
Signed-off-by: Jan Bartel
---
.../jetty/webapp/WebInfConfiguration.java | 38 ++++++++++++++++---
1 file changed, 32 insertions(+), 6 deletions(-)
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
index aa8fe646814..c01e8caf62d 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
@@ -779,22 +779,25 @@ public class WebInfConfiguration extends AbstractConfiguration
resource = context.newResource(context.getWar());
}
- String tmp = URIUtil.decodePath(resource.getURI().getPath());
+ String tmp = getResourceBasePath(resource);
if (tmp.endsWith("/"))
tmp = tmp.substring(0, tmp.length() - 1);
if (tmp.endsWith("!"))
tmp = tmp.substring(0, tmp.length() - 1);
//get just the last part which is the filename
int i = tmp.lastIndexOf("/");
- canonicalName.append(tmp.substring(i + 1));
+ if (i > -1 && tmp.length() > 1)
+ {
+ canonicalName.append(tmp.substring(i + 1));
+ }
canonicalName.append("-");
}
- catch (Exception e)
+ catch (IOException e)
{
- LOG.warn("Can't generate resourceBase as part of webapp tmp dir name: " + e);
- LOG.debug(e);
+ LOG.warn("Can't get resource for resourceBase", e);
+ LOG.debug(e);
}
-
+
//Context name
canonicalName.append(context.getContextPath());
@@ -810,6 +813,29 @@ public class WebInfConfiguration extends AbstractConfiguration
return StringUtil.sanitizeFileSystemName(canonicalName.toString());
}
+
+ private static String getResourceBasePath(Resource resource)
+ {
+ String tmp = "";
+ try
+ {
+ tmp = URIUtil.decodePath(resource.getURI().getPath());
+ }
+ catch (Exception e)
+ {
+ try
+ {
+ tmp = URIUtil.decodePath(resource.getURI().toURL().getPath());
+ }
+ catch (Exception x)
+ {
+ LOG.warn("Can't get path for resource", x);
+ LOG.debug(e);
+ }
+ }
+
+ return tmp;
+ }
protected List findClassDirs(WebAppContext context)
throws Exception
From 2774533150bd7292cfca678f1114843ad5e85f87 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Mon, 4 Nov 2019 14:55:41 -0600
Subject: [PATCH 12/34] Issue #4173 - improved Base Resource Name resolution
Signed-off-by: Joakim Erdfelt
---
.../jetty/webapp/WebInfConfiguration.java | 93 ++++++++----
.../jetty/webapp/WebInfConfigurationTest.java | 139 ++++++++++++++++++
.../src/test/resources/test-base-resource.jar | Bin 0 -> 2126 bytes
3 files changed, 204 insertions(+), 28 deletions(-)
create mode 100644 jetty-webapp/src/test/resources/test-base-resource.jar
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
index c01e8caf62d..797e171531d 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
@@ -766,7 +766,7 @@ public class WebInfConfiguration extends AbstractConfiguration
}
}
- //Resource base
+ // Resource base
try
{
Resource resource = context.getBaseResource();
@@ -775,29 +775,20 @@ public class WebInfConfiguration extends AbstractConfiguration
if (context.getWar() == null || context.getWar().length() == 0)
throw new IllegalStateException("No resourceBase or war set for context");
- // Set dir or WAR
+ // Set dir or WAR to resource
resource = context.newResource(context.getWar());
}
- String tmp = getResourceBasePath(resource);
- if (tmp.endsWith("/"))
- tmp = tmp.substring(0, tmp.length() - 1);
- if (tmp.endsWith("!"))
- tmp = tmp.substring(0, tmp.length() - 1);
- //get just the last part which is the filename
- int i = tmp.lastIndexOf("/");
- if (i > -1 && tmp.length() > 1)
- {
- canonicalName.append(tmp.substring(i + 1));
- }
+ String resourceBaseName = getResourceBaseName(resource);
+ canonicalName.append(resourceBaseName);
canonicalName.append("-");
}
- catch (IOException e)
+ catch (Exception e)
{
LOG.warn("Can't get resource for resourceBase", e);
- LOG.debug(e);
+ LOG.debug(e);
}
-
+
//Context name
canonicalName.append(context.getContextPath());
@@ -813,28 +804,74 @@ public class WebInfConfiguration extends AbstractConfiguration
return StringUtil.sanitizeFileSystemName(canonicalName.toString());
}
-
- private static String getResourceBasePath(Resource resource)
+
+ protected static String getResourceBaseName(Resource resource)
{
- String tmp = "";
+ // Use File System and File interface if present
try
{
- tmp = URIUtil.decodePath(resource.getURI().getPath());
+ File resourceFile = resource.getFile();
+ if (resourceFile != null)
+ {
+ return resourceFile.getName();
+ }
}
- catch (Exception e)
+ catch (IOException e)
{
- try
+ e.printStackTrace();
+ }
+
+ // Use URI itself.
+ URI uri = resource.getURI();
+ if (uri == null)
+ {
+ throw new RuntimeException("Unable to produce URI from resource: " + resource);
+ }
+ return getUriLastPathSegment(uri);
+ }
+
+ protected static String getUriLastPathSegment(URI uri)
+ {
+ String path = uri.getPath();
+
+ if ("jar".equalsIgnoreCase(uri.getScheme()))
+ {
+ String schemeSpecificPart = uri.getRawSchemeSpecificPart();
+ URI inner = URI.create(schemeSpecificPart);
+ if ("file".equalsIgnoreCase(inner.getScheme()))
{
- tmp = URIUtil.decodePath(resource.getURI().toURL().getPath());
+ path = inner.getRawPath();
+ int idx = path.lastIndexOf("!/");
+ if (idx >= 0)
+ {
+ String pathInJar = path.substring(idx + 2);
+ if (StringUtil.isNotBlank(pathInJar))
+ {
+ URI pathInJarUri = URI.create(pathInJar);
+ return getUriLastPathSegment(pathInJarUri);
+ }
+ else
+ {
+ // Strip empty "!/"
+ path = path.substring(0, idx);
+ }
+ }
+ // if we reached here, we have "jar:file:" but no
+ // internal jar reference with "!/" present
}
- catch (Exception x)
+ else
{
- LOG.warn("Can't get path for resource", x);
- LOG.debug(e);
+ // inner URI is not "file"
+ return getUriLastPathSegment(inner);
}
}
-
- return tmp;
+
+ if (path.endsWith("/"))
+ path = path.substring(0, path.length() - 1);
+ // get just the last part which is the filename
+ int i = path.lastIndexOf("/");
+
+ return path.substring(i + 1);
}
protected List findClassDirs(WebAppContext context)
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
index 11b42a515cb..85c53dc90b7 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
@@ -18,27 +18,56 @@
package org.eclipse.jetty.webapp;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitOption;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+import org.eclipse.jetty.toolchain.test.FS;
+import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
+import org.eclipse.jetty.toolchain.test.jupiter.WorkDir;
+import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension;
import org.eclipse.jetty.util.JavaVersion;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.resource.PathResource;
import org.eclipse.jetty.util.resource.Resource;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnJre;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.junit.jupiter.api.condition.EnabledOnJre;
import org.junit.jupiter.api.condition.JRE;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.endsWith;
+import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* WebInfConfigurationTest
*/
+@ExtendWith(WorkDirExtension.class)
public class WebInfConfigurationTest
{
+ private static final Logger LOG = Log.getLogger(WebInfConfigurationTest.class);
+ private static final String TEST_RESOURCE_JAR = "test-base-resource.jar";
+
+ public WorkDir workDir;
/**
* Assume target < jdk9. In this case, we should be able to extract
@@ -110,4 +139,114 @@ public class WebInfConfigurationTest
assertEquals(1, containerResources.size());
assertThat(containerResources.get(0).toString(), containsString("jetty-util"));
}
+
+ public static Stream baseResourceNames()
+ {
+ return Stream.of(
+ Arguments.of("test.war", "test.war"),
+ Arguments.of("a/b/c/test.war", "test.war"),
+ Arguments.of("bar%2Fbaz/test.war", "test.war"),
+ Arguments.of("fizz buzz/test.war", "test.war"),
+ Arguments.of("another one/bites the dust/", "bites the dust"),
+ Arguments.of("another+one/bites+the+dust/", "bites+the+dust"),
+ Arguments.of("another%20one/bites%20the%20dust/", "bites%20the%20dust"),
+ Arguments.of("spanish/número.war", "número.war"),
+ Arguments.of("spanish/n\uC3BAmero.war", "n\uC3BAmero.war"),
+ Arguments.of("spanish/n%C3%BAmero.war", "n%C3%BAmero.war"),
+ Arguments.of("a/b!/", "b!"),
+ Arguments.of("a/b!/c/", "c"),
+ Arguments.of("a/b!/c/d/", "d"),
+ Arguments.of("a/b%21/", "b%21")
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("baseResourceNames")
+ public void testPathGetResourceBaseName(String basePath, String expectedName) throws IOException
+ {
+ Path root = workDir.getPath();
+ Path base = root.resolve(basePath);
+ if (basePath.endsWith("/"))
+ {
+ // we are working with a directory.
+ FS.ensureDirExists(base);
+ }
+ else
+ {
+ FS.ensureDirExists(base.getParent());
+ FS.touch(base);
+ }
+
+ Resource resource = new PathResource(base);
+ assertThat(WebInfConfiguration.getResourceBaseName(resource), is(expectedName));
+ }
+
+ /**
+ * Similar to testPathGetResourceBaseName, but with "file:" URIs
+ */
+ @ParameterizedTest
+ @MethodSource("baseResourceNames")
+ public void testFileUriGetUriLastPathSegment(String basePath, String expectedName) throws IOException
+ {
+ Path root = workDir.getPath();
+ Path base = root.resolve(basePath);
+ URI uri = base.toUri();
+ assertThat(WebInfConfiguration.getUriLastPathSegment(uri), is(expectedName));
+ }
+
+ public static Stream jarFileBaseResourceNames() throws URISyntaxException, IOException
+ {
+ Path testJar = MavenTestingUtils.getTestResourcePathFile(TEST_RESOURCE_JAR);
+ URI uri = new URI("jar", testJar.toUri().toASCIIString(), null);
+
+ Map env = new HashMap<>();
+ env.put("multi-release", "runtime");
+
+ List arguments = new ArrayList<>();
+ arguments.add(Arguments.of(uri, TEST_RESOURCE_JAR));
+ try (FileSystem zipFs = FileSystems.newFileSystem(uri, env))
+ {
+ FileVisitOption[] fileVisitOptions = new FileVisitOption[]{};
+
+ for (Path root : zipFs.getRootDirectories())
+ {
+ Stream entryStream = Files.find(root, 10, (path, attrs) -> true, fileVisitOptions);
+ entryStream.forEach((path) ->
+ {
+ if (path.toString().endsWith("!/"))
+ {
+ // skip - JAR entry type not supported by Jetty
+ // TODO: re-enable once we start to use zipfs
+ LOG.warn("Skipping Unsupported entry: " + path.toUri());
+ }
+ else
+ {
+ String lastPathSegment = TEST_RESOURCE_JAR;
+ if (path.getFileName() != null)
+ {
+ lastPathSegment = path.getFileName().toString();
+ }
+ // Strip last '/' from directory entries
+ if (Files.isDirectory(path) && lastPathSegment.endsWith("/"))
+ {
+ lastPathSegment = lastPathSegment.substring(0, lastPathSegment.length() - 1);
+ }
+ arguments.add(Arguments.of(path.toUri(), lastPathSegment));
+ }
+ });
+ }
+ }
+
+ return arguments.stream();
+ }
+
+ /**
+ * Tests of "jar:file:" based URIs
+ */
+ @ParameterizedTest
+ @MethodSource("jarFileBaseResourceNames")
+ public void testJarFileUriGetUriLastPathSegment(URI uri, String expectedName) throws IOException
+ {
+ assertThat(WebInfConfiguration.getUriLastPathSegment(uri), is(expectedName));
+ }
}
diff --git a/jetty-webapp/src/test/resources/test-base-resource.jar b/jetty-webapp/src/test/resources/test-base-resource.jar
new file mode 100644
index 0000000000000000000000000000000000000000..aa3066909b36f5c46ef450143c03684ef11a17a7
GIT binary patch
literal 2126
zcmaKtyH3ME5JfjH9uWcwMSxP7BBF>C=h0H|5)B2RrL*Ipq`(2&5t7Akz=u#GsM1mL
z8I*vi05Q8Unc49=8!2*>d+u&_W^TGCg<@HVB_VbK?^KYrDvHAKN70}k)Y{FF-?x8X
zgy?4KEns!MJB<1vuwVi2-Z+eq{<_w8gEI)%ft`+BC$_V7Ynl%HBO-ohrt2wja%16OX}_Ri;$;Xu&O7
z`W>FL9rBVRzGv+FqWaz?3XdsDO3~Y%BU${HctkYkB3ne(VB1x|E4lBM?N1)lm-xdf
zD%<2@7{``7j%k~4ooo}-u{QZ;rm{_Rv0ljyc5G6~x?V}HB$ZT3RmnP3vOcY3E?*Ye
z(+9^QOP{UjEN1f-A%$qdC!IIVCc2rX6AgWMq_djM$ui)&heza+q9AOVUW6wpcv>Xn
zO-+dW2RxG5M$9zbh*fh0OU*jE@EMjpf~yNI`s`KBhE4p9kp!qlkJ_
zI-vel>19?RVM+@mJ{6&|BO8(Ffol^I%dr8GS%T2~Lhb@I3k`~y(gpYGQB2Dk+?c0`
zOdDKx;D9kfcjlbl_RkuZYI{=};ihjXn72L89KG|Zg<0n%S%p8BlX~YJF_LFjX+fT{
N0
Date: Mon, 4 Nov 2019 15:52:22 -0600
Subject: [PATCH 13/34] Issue #4173 - Improve OSX test expectation (NFD form)
Signed-off-by: Joakim Erdfelt
---
.../eclipse/jetty/webapp/WebInfConfigurationTest.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
index 85c53dc90b7..74ad7061b29 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
@@ -26,6 +26,7 @@ import java.nio.file.FileSystems;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.text.Normalizer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -46,6 +47,7 @@ import org.junit.jupiter.api.condition.DisabledOnJre;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.junit.jupiter.api.condition.EnabledOnJre;
import org.junit.jupiter.api.condition.JRE;
+import org.junit.jupiter.api.condition.OS;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -150,8 +152,7 @@ public class WebInfConfigurationTest
Arguments.of("another one/bites the dust/", "bites the dust"),
Arguments.of("another+one/bites+the+dust/", "bites+the+dust"),
Arguments.of("another%20one/bites%20the%20dust/", "bites%20the%20dust"),
- Arguments.of("spanish/número.war", "número.war"),
- Arguments.of("spanish/n\uC3BAmero.war", "n\uC3BAmero.war"),
+ Arguments.of("spanish/n\u00FAmero.war", "n\u00FAmero.war"),
Arguments.of("spanish/n%C3%BAmero.war", "n%C3%BAmero.war"),
Arguments.of("a/b!/", "b!"),
Arguments.of("a/b!/c/", "c"),
@@ -191,6 +192,11 @@ public class WebInfConfigurationTest
Path root = workDir.getPath();
Path base = root.resolve(basePath);
URI uri = base.toUri();
+ if (OS.MAC.isCurrentOs())
+ {
+ // Normalize Unicode to NFD form that OSX Path/FileSystem produces
+ expectedName = Normalizer.normalize(expectedName, Normalizer.Form.NFD);
+ }
assertThat(WebInfConfiguration.getUriLastPathSegment(uri), is(expectedName));
}
From 6ac925631cb342b8cfd0088155c49bb2bcd17e11 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Mon, 4 Nov 2019 16:01:43 -0600
Subject: [PATCH 14/34] Issue #4173 - Adding more testcases for raw root-ish
Resources
Signed-off-by: Joakim Erdfelt
---
.../jetty/webapp/WebInfConfigurationTest.java | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
index 74ad7061b29..130de381851 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
@@ -142,6 +142,22 @@ public class WebInfConfigurationTest
assertThat(containerResources.get(0).toString(), containsString("jetty-util"));
}
+ public static Stream rawResourceNames()
+ {
+ return Stream.of(
+ Arguments.of("/", ""),
+ Arguments.of("/a", "a")
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("rawResourceNames")
+ public void testTinyGetResourceBaseName(String rawPath, String expectedName) throws IOException
+ {
+ Resource resource = Resource.newResource(rawPath);
+ assertThat(WebInfConfiguration.getResourceBaseName(resource), is(expectedName));
+ }
+
public static Stream baseResourceNames()
{
return Stream.of(
From 68cf4f23f1ac8706e805085fa4cffdd4fcbb1e1e Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Mon, 4 Nov 2019 16:03:01 -0600
Subject: [PATCH 15/34] Issue #4173 - Ignore logging of failed
Resource.getFile()
Signed-off-by: Joakim Erdfelt
---
.../main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
index 797e171531d..b8efd3fdfd9 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
@@ -818,7 +818,7 @@ public class WebInfConfiguration extends AbstractConfiguration
}
catch (IOException e)
{
- e.printStackTrace();
+ LOG.ignore(e);
}
// Use URI itself.
From 36c95fdd43a7cc20e2001269cef7cb5e04dcd1ff Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 10:43:15 -0600
Subject: [PATCH 16/34] Updating to version 9.2.29.v20191105
---
VERSION.txt | 3 ++-
aggregates/jetty-all/pom.xml | 2 +-
apache-jsp/pom.xml | 2 +-
apache-jstl/pom.xml | 2 +-
examples/async-rest/async-rest-jar/pom.xml | 2 +-
examples/async-rest/async-rest-webapp/pom.xml | 2 +-
examples/async-rest/pom.xml | 2 +-
examples/embedded/pom.xml | 2 +-
examples/pom.xml | 2 +-
jetty-alpn/jetty-alpn-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-server/pom.xml | 2 +-
jetty-alpn/pom.xml | 2 +-
jetty-annotations/pom.xml | 2 +-
jetty-ant/pom.xml | 2 +-
jetty-cdi/pom.xml | 2 +-
jetty-client/pom.xml | 2 +-
jetty-continuation/pom.xml | 2 +-
jetty-deploy/pom.xml | 2 +-
jetty-distribution/pom.xml | 2 +-
jetty-fcgi/fcgi-client/pom.xml | 2 +-
jetty-fcgi/fcgi-server/pom.xml | 2 +-
jetty-fcgi/pom.xml | 2 +-
jetty-http-spi/pom.xml | 2 +-
jetty-http/pom.xml | 2 +-
jetty-io/pom.xml | 2 +-
jetty-jaas/pom.xml | 2 +-
jetty-jaspi/pom.xml | 2 +-
jetty-jmx/pom.xml | 2 +-
jetty-jndi/pom.xml | 2 +-
jetty-jsp/pom.xml | 2 +-
jetty-jspc-maven-plugin/pom.xml | 2 +-
jetty-maven-plugin/pom.xml | 2 +-
jetty-monitor/pom.xml | 2 +-
jetty-nosql/pom.xml | 2 +-
jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot/pom.xml | 2 +-
jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +-
jetty-osgi/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi/pom.xml | 2 +-
jetty-plus/pom.xml | 2 +-
jetty-proxy/pom.xml | 2 +-
jetty-quickstart/pom.xml | 2 +-
jetty-rewrite/pom.xml | 2 +-
jetty-runner/pom.xml | 2 +-
jetty-security/pom.xml | 2 +-
jetty-server/pom.xml | 2 +-
jetty-servlet/pom.xml | 2 +-
jetty-servlets/pom.xml | 2 +-
jetty-spdy/pom.xml | 2 +-
jetty-spdy/spdy-alpn-tests/pom.xml | 2 +-
jetty-spdy/spdy-client/pom.xml | 2 +-
jetty-spdy/spdy-core/pom.xml | 2 +-
jetty-spdy/spdy-example-webapp/pom.xml | 2 +-
jetty-spdy/spdy-http-client-transport/pom.xml | 2 +-
jetty-spdy/spdy-http-common/pom.xml | 2 +-
jetty-spdy/spdy-http-server/pom.xml | 2 +-
jetty-spdy/spdy-server/pom.xml | 2 +-
jetty-spring/pom.xml | 2 +-
jetty-start/pom.xml | 2 +-
jetty-util-ajax/pom.xml | 2 +-
jetty-util/pom.xml | 2 +-
jetty-webapp/pom.xml | 2 +-
jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +-
jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +-
jetty-websocket/pom.xml | 2 +-
jetty-websocket/websocket-api/pom.xml | 2 +-
jetty-websocket/websocket-client/pom.xml | 2 +-
jetty-websocket/websocket-common/pom.xml | 2 +-
jetty-websocket/websocket-server/pom.xml | 2 +-
jetty-websocket/websocket-servlet/pom.xml | 2 +-
jetty-xml/pom.xml | 2 +-
pom.xml | 2 +-
tests/pom.xml | 2 +-
tests/test-continuation/pom.xml | 2 +-
tests/test-integration/pom.xml | 2 +-
tests/test-jmx/jmx-webapp-it/pom.xml | 2 +-
tests/test-jmx/jmx-webapp/pom.xml | 2 +-
tests/test-jmx/pom.xml | 2 +-
tests/test-loginservice/pom.xml | 2 +-
tests/test-quickstart/pom.xml | 2 +-
tests/test-sessions/pom.xml | 2 +-
tests/test-sessions/test-hash-sessions/pom.xml | 2 +-
tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +-
tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +-
tests/test-sessions/test-sessions-common/pom.xml | 2 +-
tests/test-webapps/pom.xml | 2 +-
tests/test-webapps/test-jaas-webapp/pom.xml | 2 +-
tests/test-webapps/test-jetty-webapp/pom.xml | 2 +-
tests/test-webapps/test-jndi-webapp/pom.xml | 2 +-
tests/test-webapps/test-mock-resources/pom.xml | 2 +-
tests/test-webapps/test-proxy-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/pom.xml | 2 +-
.../test-servlet-spec/test-container-initializer/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +-
tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +-
100 files changed, 101 insertions(+), 100 deletions(-)
diff --git a/VERSION.txt b/VERSION.txt
index f08ebe9b4a3..da388c4f7ff 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,4 +1,5 @@
-jetty-9.2.29-SNAPSHOT
+jetty-9.2.29.v20191105 - 05 November 2019
+ + 4217 SslConnection.DecryptedEnpoint.flush eternal busy loop
jetty-9.2.28.v20190418 - 18 April 2019
+ 3549 Directory Listing on Windows reveals Resource Base path
diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml
index 168e6d78c0a..bbbb6bc9915 100644
--- a/aggregates/jetty-all/pom.xml
+++ b/aggregates/jetty-all/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../../pom.xml
4.0.0
diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml
index 006e61373a4..a2b28cea7db 100644
--- a/apache-jsp/pom.xml
+++ b/apache-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
apache-jsp
diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml
index 9ae27c734b4..5f267c052f4 100644
--- a/apache-jstl/pom.xml
+++ b/apache-jstl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
apache-jstl
diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index 7cbdaffa136..fba57d2f4c0 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index c90f163748a..616fc72b282 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml
index e05638616b9..97a0275b3f8 100644
--- a/examples/async-rest/pom.xml
+++ b/examples/async-rest/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml
index aff398e259b..07e6af13e6f 100644
--- a/examples/embedded/pom.xml
+++ b/examples/embedded/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/examples/pom.xml b/examples/pom.xml
index 7d4b884a66d..64d1263d7ff 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
org.eclipse.jetty.examples
diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml
index d259834eab3..33f792c4e4e 100644
--- a/jetty-alpn/jetty-alpn-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-alpn-client
diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml
index 336ae721017..ea459cb792e 100644
--- a/jetty-alpn/jetty-alpn-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-alpn-server
diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml
index 51f340a4e2c..8b0bc1dd453 100644
--- a/jetty-alpn/pom.xml
+++ b/jetty-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-alpn-parent
diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml
index 2ee00d6483e..94631acf715 100644
--- a/jetty-annotations/pom.xml
+++ b/jetty-annotations/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-annotations
diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml
index fbc7108eded..dbbb6201c05 100644
--- a/jetty-ant/pom.xml
+++ b/jetty-ant/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-ant
diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml
index 147dc4b29d5..7ac1a13e920 100644
--- a/jetty-cdi/pom.xml
+++ b/jetty-cdi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-cdi
diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml
index 3da5c822b67..7358359fbc9 100644
--- a/jetty-client/pom.xml
+++ b/jetty-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml
index 7e83ba2e830..4683512ea62 100644
--- a/jetty-continuation/pom.xml
+++ b/jetty-continuation/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-continuation
diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml
index cfd9ae1952d..14890b0682a 100644
--- a/jetty-deploy/pom.xml
+++ b/jetty-deploy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-deploy
diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml
index 927d4c1a2ed..679c8a2f1cc 100644
--- a/jetty-distribution/pom.xml
+++ b/jetty-distribution/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
jetty-distribution
Jetty :: Distribution Assemblies
diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml
index 97072e9b12f..2246d119461 100644
--- a/jetty-fcgi/fcgi-client/pom.xml
+++ b/jetty-fcgi/fcgi-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml
index 79c79f15f58..ac20c2b46c3 100644
--- a/jetty-fcgi/fcgi-server/pom.xml
+++ b/jetty-fcgi/fcgi-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml
index d7a84f7e5be..7ba4bcde503 100644
--- a/jetty-fcgi/pom.xml
+++ b/jetty-fcgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml
index ca1dd97d56b..1da2e203d66 100644
--- a/jetty-http-spi/pom.xml
+++ b/jetty-http-spi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-http-spi
diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml
index 303079c411f..8b337603200 100644
--- a/jetty-http/pom.xml
+++ b/jetty-http/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-http
diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml
index 3a5c1eaac03..d3c54b0f55b 100644
--- a/jetty-io/pom.xml
+++ b/jetty-io/pom.xml
@@ -2,7 +2,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-io
diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml
index 4b78680ce44..b1271a47275 100644
--- a/jetty-jaas/pom.xml
+++ b/jetty-jaas/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jaas
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index a678bc4153e..75cf9d1003a 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jaspi
diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml
index 1af352530ef..554f9879952 100644
--- a/jetty-jmx/pom.xml
+++ b/jetty-jmx/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jmx
diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml
index d5bb61af137..97d32b3d729 100644
--- a/jetty-jndi/pom.xml
+++ b/jetty-jndi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jndi
diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml
index 350ef153fcb..907217fda22 100644
--- a/jetty-jsp/pom.xml
+++ b/jetty-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jsp
diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml
index 0f92a45ba3a..d689239f314 100644
--- a/jetty-jspc-maven-plugin/pom.xml
+++ b/jetty-jspc-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-jspc-maven-plugin
diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml
index 90b8ea31b96..3a97b320b77 100644
--- a/jetty-maven-plugin/pom.xml
+++ b/jetty-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-maven-plugin
diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml
index fc1823aaf3b..6a95f10df04 100644
--- a/jetty-monitor/pom.xml
+++ b/jetty-monitor/pom.xml
@@ -19,7 +19,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-monitor
diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml
index cf9160291e9..7cf8d334282 100644
--- a/jetty-nosql/pom.xml
+++ b/jetty-nosql/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-nosql
diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml
index 9270ac4fc23..34628822c1d 100644
--- a/jetty-osgi/jetty-osgi-alpn/pom.xml
+++ b/jetty-osgi/jetty-osgi-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-osgi-alpn
diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
index 9d1c1fb4c0d..48255ac5dbc 100644
--- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-osgi-boot-jsp
diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
index 9d53075293a..c54a23e3603 100644
--- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml
index c3a9fcfba73..3632d73ec28 100644
--- a/jetty-osgi/jetty-osgi-boot/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-osgi-boot
diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml
index 559dfca815d..07abfeef57c 100644
--- a/jetty-osgi/jetty-osgi-httpservice/pom.xml
+++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-httpservice
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index 1267a8a6768..43be5fa001c 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
org.eclipse.jetty.osgi
jetty-osgi-project
diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml
index 7b6ffdaa892..4318ceaca15 100644
--- a/jetty-osgi/test-jetty-osgi-context/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-context/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
test-jetty-osgi-context
diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
index cb20d9cd173..919df9e015c 100644
--- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml
index 7f8c5f26544..0185ebe8b15 100644
--- a/jetty-osgi/test-jetty-osgi/pom.xml
+++ b/jetty-osgi/test-jetty-osgi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml
index cf9a796e3e6..e19d2548027 100644
--- a/jetty-plus/pom.xml
+++ b/jetty-plus/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-plus
diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml
index 7f0ac07194d..c61f49e0208 100644
--- a/jetty-proxy/pom.xml
+++ b/jetty-proxy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-proxy
diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml
index 468bcb01b6b..5f306ec5b54 100644
--- a/jetty-quickstart/pom.xml
+++ b/jetty-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
org.eclipse.jetty
diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml
index cd2088249d0..722b3532260 100644
--- a/jetty-rewrite/pom.xml
+++ b/jetty-rewrite/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-rewrite
diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml
index f771cb8dbf8..6a281bc2fda 100644
--- a/jetty-runner/pom.xml
+++ b/jetty-runner/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-runner
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index 87cd1782caf..161549408c7 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-security
diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml
index 68c6ebc57c3..31e3a614ff9 100644
--- a/jetty-server/pom.xml
+++ b/jetty-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-server
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 7f72ff2d060..9fb6d0a5c52 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-servlet
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index faa5e0bf352..9c9f22f60bf 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-servlets
diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml
index fafbbe0fbd9..e0ff6da0336 100644
--- a/jetty-spdy/pom.xml
+++ b/jetty-spdy/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml
index da22d20f7c0..3a5e4a7ec3e 100644
--- a/jetty-spdy/spdy-alpn-tests/pom.xml
+++ b/jetty-spdy/spdy-alpn-tests/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml
index cee5578461a..831a77b1a65 100644
--- a/jetty-spdy/spdy-client/pom.xml
+++ b/jetty-spdy/spdy-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml
index 73e2d24a5b3..913d75cd348 100644
--- a/jetty-spdy/spdy-core/pom.xml
+++ b/jetty-spdy/spdy-core/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml
index 7227bfa7620..be251dbce42 100644
--- a/jetty-spdy/spdy-example-webapp/pom.xml
+++ b/jetty-spdy/spdy-example-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
spdy-example-webapp
diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml
index 48f9f8465eb..021dbe9f898 100644
--- a/jetty-spdy/spdy-http-client-transport/pom.xml
+++ b/jetty-spdy/spdy-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml
index 04a932cf70d..389a8d2010a 100644
--- a/jetty-spdy/spdy-http-common/pom.xml
+++ b/jetty-spdy/spdy-http-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml
index 30ace5a7beb..82672c96843 100644
--- a/jetty-spdy/spdy-http-server/pom.xml
+++ b/jetty-spdy/spdy-http-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
spdy-http-server
diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml
index abee5b2704d..c5ee1f8fbc8 100644
--- a/jetty-spdy/spdy-server/pom.xml
+++ b/jetty-spdy/spdy-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml
index 657041b6176..29fea49994f 100644
--- a/jetty-spring/pom.xml
+++ b/jetty-spring/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-spring
diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml
index 44b27e60f8a..cb4e1bfd035 100644
--- a/jetty-start/pom.xml
+++ b/jetty-start/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-start
diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml
index dd61dce4473..73a06f8bacc 100644
--- a/jetty-util-ajax/pom.xml
+++ b/jetty-util-ajax/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-util-ajax
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 56b4c27c3e5..6cf16fb4b4d 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-util
diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml
index 6b3885cdd65..f051b308d67 100644
--- a/jetty-webapp/pom.xml
+++ b/jetty-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-webapp
diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml
index c6e969aeffa..597865a6a22 100644
--- a/jetty-websocket/javax-websocket-client-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-client-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml
index 5e57dc6830a..eac662a1a23 100644
--- a/jetty-websocket/javax-websocket-server-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-server-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml
index 5907610b08e..76e77d3426a 100644
--- a/jetty-websocket/pom.xml
+++ b/jetty-websocket/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml
index 3ee8ba777e9..a3f602c8758 100644
--- a/jetty-websocket/websocket-api/pom.xml
+++ b/jetty-websocket/websocket-api/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml
index a1ae2f3c724..e209305220f 100644
--- a/jetty-websocket/websocket-client/pom.xml
+++ b/jetty-websocket/websocket-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml
index 7ce350495d6..932cd8fba5a 100644
--- a/jetty-websocket/websocket-common/pom.xml
+++ b/jetty-websocket/websocket-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml
index b5ab49853d8..3cfd1be132a 100644
--- a/jetty-websocket/websocket-server/pom.xml
+++ b/jetty-websocket/websocket-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index 3b5bea64e63..2eb44732011 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml
index 5a3a9c5f1e0..3e27279cdb2 100644
--- a/jetty-xml/pom.xml
+++ b/jetty-xml/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jetty-xml
diff --git a/pom.xml b/pom.xml
index 74a9bb25d90..d88ba6783a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
23
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
Jetty :: Project
http://www.eclipse.org/jetty
pom
diff --git a/tests/pom.xml b/tests/pom.xml
index 263b3c81210..04b60c610ed 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
org.eclipse.jetty.tests
diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml
index 3a02c64ba9d..159e8d9594f 100644
--- a/tests/test-continuation/pom.xml
+++ b/tests/test-continuation/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml
index 67e8aa15e01..e8df9e21311 100644
--- a/tests/test-integration/pom.xml
+++ b/tests/test-integration/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
test-integration
diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml
index f6446835386..4006050c42a 100644
--- a/tests/test-jmx/jmx-webapp-it/pom.xml
+++ b/tests/test-jmx/jmx-webapp-it/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
jmx-webapp-it
diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml
index 44d41afba24..3348974e657 100644
--- a/tests/test-jmx/jmx-webapp/pom.xml
+++ b/tests/test-jmx/jmx-webapp/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
jmx-webapp
war
diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml
index 191c5da855e..81a549b190b 100644
--- a/tests/test-jmx/pom.xml
+++ b/tests/test-jmx/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
4.0.0
test-jmx-parent
diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml
index 24b2ab7d04f..d2b25f9b21a 100644
--- a/tests/test-loginservice/pom.xml
+++ b/tests/test-loginservice/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-loginservice
Jetty Tests :: Login Service
diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml
index 8253c131849..92c0a2fd071 100644
--- a/tests/test-quickstart/pom.xml
+++ b/tests/test-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml
index 0994621bbc3..507a5df7a65 100644
--- a/tests/test-sessions/pom.xml
+++ b/tests/test-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-sessions-parent
Jetty Tests :: Sessions :: Parent
diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml
index 7ff26a30756..dd781c63404 100644
--- a/tests/test-sessions/test-hash-sessions/pom.xml
+++ b/tests/test-sessions/test-hash-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-hash-sessions
Jetty Tests :: Sessions :: Hash
diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml
index 4981295717b..28d08a3ad02 100644
--- a/tests/test-sessions/test-jdbc-sessions/pom.xml
+++ b/tests/test-sessions/test-jdbc-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-jdbc-sessions
Jetty Tests :: Sessions :: JDBC
diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml
index e07351a29fc..0825b35578d 100644
--- a/tests/test-sessions/test-mongodb-sessions/pom.xml
+++ b/tests/test-sessions/test-mongodb-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-mongodb-sessions
Jetty Tests :: Sessions :: Mongo
diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml
index b8118a90e46..6d5fb172559 100644
--- a/tests/test-sessions/test-sessions-common/pom.xml
+++ b/tests/test-sessions/test-sessions-common/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-sessions-common
Jetty Tests :: Sessions :: Common
diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml
index 78ccd0c921b..4e40ae3ff89 100644
--- a/tests/test-webapps/pom.xml
+++ b/tests/test-webapps/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
test-webapps-parent
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index 84d781b59dd..bd4481bd72e 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-jaas-webapp
Jetty Tests :: WebApp :: JAAS
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index 6501faf3923..83506c17649 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml
index c092a714fdb..fbe5b868f4d 100644
--- a/tests/test-webapps/test-jndi-webapp/pom.xml
+++ b/tests/test-webapps/test-jndi-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-jndi-webapp
Jetty Tests :: WebApp :: JNDI
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index 9af1e9e0d58..60d5535843a 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
Jetty Tests :: WebApp :: Mock Resources
test-mock-resources
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index 1dcac9a5cfe..43b10864473 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml
index 439f7d4236b..9c8fb1ad5ba 100644
--- a/tests/test-webapps/test-servlet-spec/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-servlet-spec-parent
Jetty Tests :: Spec Test WebApp :: Parent
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 ebc35b01c67..cebb3747cb7 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-container-initializer
jar
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 9c46892ba60..d65d1e7c37e 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
Jetty Tests :: Webapps :: Spec Webapp
test-spec-webapp
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 6ba14ccf375..1c89443455f 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar
org.eclipse.jetty.tests
diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml
index 9fc6313636f..f59ad5f9a58 100644
--- a/tests/test-webapps/test-webapp-rfc2616/pom.xml
+++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29-SNAPSHOT
+ 9.2.29.v20191105
test-webapp-rfc2616
Jetty Tests :: WebApp :: RFC2616
From b17439c73172418242ed60c6b53adb130c74b8a6 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 11:23:21 -0600
Subject: [PATCH 17/34] Updating to version 9.2.30-SNAPSHOT
---
VERSION.txt | 2 ++
aggregates/jetty-all/pom.xml | 2 +-
apache-jsp/pom.xml | 2 +-
apache-jstl/pom.xml | 2 +-
examples/async-rest/async-rest-jar/pom.xml | 2 +-
examples/async-rest/async-rest-webapp/pom.xml | 2 +-
examples/async-rest/pom.xml | 2 +-
examples/embedded/pom.xml | 2 +-
examples/pom.xml | 2 +-
jetty-alpn/jetty-alpn-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-server/pom.xml | 2 +-
jetty-alpn/pom.xml | 2 +-
jetty-annotations/pom.xml | 2 +-
jetty-ant/pom.xml | 2 +-
jetty-cdi/pom.xml | 2 +-
jetty-client/pom.xml | 2 +-
jetty-continuation/pom.xml | 2 +-
jetty-deploy/pom.xml | 2 +-
jetty-distribution/pom.xml | 2 +-
jetty-fcgi/fcgi-client/pom.xml | 2 +-
jetty-fcgi/fcgi-server/pom.xml | 2 +-
jetty-fcgi/pom.xml | 2 +-
jetty-http-spi/pom.xml | 2 +-
jetty-http/pom.xml | 2 +-
jetty-io/pom.xml | 2 +-
jetty-jaas/pom.xml | 2 +-
jetty-jaspi/pom.xml | 2 +-
jetty-jmx/pom.xml | 2 +-
jetty-jndi/pom.xml | 2 +-
jetty-jsp/pom.xml | 2 +-
jetty-jspc-maven-plugin/pom.xml | 2 +-
jetty-maven-plugin/pom.xml | 2 +-
jetty-monitor/pom.xml | 2 +-
jetty-nosql/pom.xml | 2 +-
jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot/pom.xml | 2 +-
jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +-
jetty-osgi/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi/pom.xml | 2 +-
jetty-plus/pom.xml | 2 +-
jetty-proxy/pom.xml | 2 +-
jetty-quickstart/pom.xml | 2 +-
jetty-rewrite/pom.xml | 2 +-
jetty-runner/pom.xml | 2 +-
jetty-security/pom.xml | 2 +-
jetty-server/pom.xml | 2 +-
jetty-servlet/pom.xml | 2 +-
jetty-servlets/pom.xml | 2 +-
jetty-spdy/pom.xml | 2 +-
jetty-spdy/spdy-alpn-tests/pom.xml | 2 +-
jetty-spdy/spdy-client/pom.xml | 2 +-
jetty-spdy/spdy-core/pom.xml | 2 +-
jetty-spdy/spdy-example-webapp/pom.xml | 2 +-
jetty-spdy/spdy-http-client-transport/pom.xml | 2 +-
jetty-spdy/spdy-http-common/pom.xml | 2 +-
jetty-spdy/spdy-http-server/pom.xml | 2 +-
jetty-spdy/spdy-server/pom.xml | 2 +-
jetty-spring/pom.xml | 2 +-
jetty-start/pom.xml | 2 +-
jetty-util-ajax/pom.xml | 2 +-
jetty-util/pom.xml | 2 +-
jetty-webapp/pom.xml | 2 +-
jetty-websocket/javax-websocket-client-impl/pom.xml | 2 +-
jetty-websocket/javax-websocket-server-impl/pom.xml | 2 +-
jetty-websocket/pom.xml | 2 +-
jetty-websocket/websocket-api/pom.xml | 2 +-
jetty-websocket/websocket-client/pom.xml | 2 +-
jetty-websocket/websocket-common/pom.xml | 2 +-
jetty-websocket/websocket-server/pom.xml | 2 +-
jetty-websocket/websocket-servlet/pom.xml | 2 +-
jetty-xml/pom.xml | 2 +-
pom.xml | 2 +-
tests/pom.xml | 2 +-
tests/test-continuation/pom.xml | 2 +-
tests/test-integration/pom.xml | 2 +-
tests/test-jmx/jmx-webapp-it/pom.xml | 2 +-
tests/test-jmx/jmx-webapp/pom.xml | 2 +-
tests/test-jmx/pom.xml | 2 +-
tests/test-loginservice/pom.xml | 2 +-
tests/test-quickstart/pom.xml | 2 +-
tests/test-sessions/pom.xml | 2 +-
tests/test-sessions/test-hash-sessions/pom.xml | 2 +-
tests/test-sessions/test-jdbc-sessions/pom.xml | 2 +-
tests/test-sessions/test-mongodb-sessions/pom.xml | 2 +-
tests/test-sessions/test-sessions-common/pom.xml | 2 +-
tests/test-webapps/pom.xml | 2 +-
tests/test-webapps/test-jaas-webapp/pom.xml | 2 +-
tests/test-webapps/test-jetty-webapp/pom.xml | 2 +-
tests/test-webapps/test-jndi-webapp/pom.xml | 2 +-
tests/test-webapps/test-mock-resources/pom.xml | 2 +-
tests/test-webapps/test-proxy-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/pom.xml | 2 +-
.../test-servlet-spec/test-container-initializer/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 +-
tests/test-webapps/test-webapp-rfc2616/pom.xml | 2 +-
100 files changed, 101 insertions(+), 99 deletions(-)
diff --git a/VERSION.txt b/VERSION.txt
index da388c4f7ff..a22d1598b6a 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,3 +1,5 @@
+jetty-9.2.30-SNAPSHOT
+
jetty-9.2.29.v20191105 - 05 November 2019
+ 4217 SslConnection.DecryptedEnpoint.flush eternal busy loop
diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml
index bbbb6bc9915..563506d5ac3 100644
--- a/aggregates/jetty-all/pom.xml
+++ b/aggregates/jetty-all/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../../pom.xml
4.0.0
diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml
index a2b28cea7db..8132fde49dc 100644
--- a/apache-jsp/pom.xml
+++ b/apache-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
apache-jsp
diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml
index 5f267c052f4..c7c861b2ada 100644
--- a/apache-jstl/pom.xml
+++ b/apache-jstl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
apache-jstl
diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index fba57d2f4c0..25893e2ab1f 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index 616fc72b282..849068510ca 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml
index 97a0275b3f8..c8334e84f84 100644
--- a/examples/async-rest/pom.xml
+++ b/examples/async-rest/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml
index 07e6af13e6f..30e2628e84d 100644
--- a/examples/embedded/pom.xml
+++ b/examples/embedded/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/examples/pom.xml b/examples/pom.xml
index 64d1263d7ff..cc0662b2081 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
org.eclipse.jetty.examples
diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml
index 33f792c4e4e..f1b375e190d 100644
--- a/jetty-alpn/jetty-alpn-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-alpn-client
diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml
index ea459cb792e..dcef47d6e1c 100644
--- a/jetty-alpn/jetty-alpn-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-alpn-server
diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml
index 8b0bc1dd453..ac5fc0b53db 100644
--- a/jetty-alpn/pom.xml
+++ b/jetty-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-alpn-parent
diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml
index 94631acf715..01b26343fc4 100644
--- a/jetty-annotations/pom.xml
+++ b/jetty-annotations/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-annotations
diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml
index dbbb6201c05..0fe8a2c0398 100644
--- a/jetty-ant/pom.xml
+++ b/jetty-ant/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-ant
diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml
index 7ac1a13e920..dfa0235e50f 100644
--- a/jetty-cdi/pom.xml
+++ b/jetty-cdi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-cdi
diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml
index 7358359fbc9..595e2d0a748 100644
--- a/jetty-client/pom.xml
+++ b/jetty-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml
index 4683512ea62..73ca8d503c7 100644
--- a/jetty-continuation/pom.xml
+++ b/jetty-continuation/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-continuation
diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml
index 14890b0682a..c9234433527 100644
--- a/jetty-deploy/pom.xml
+++ b/jetty-deploy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-deploy
diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml
index 679c8a2f1cc..719313643e9 100644
--- a/jetty-distribution/pom.xml
+++ b/jetty-distribution/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
jetty-distribution
Jetty :: Distribution Assemblies
diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml
index 2246d119461..85a06e23820 100644
--- a/jetty-fcgi/fcgi-client/pom.xml
+++ b/jetty-fcgi/fcgi-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml
index ac20c2b46c3..24c6cb123bd 100644
--- a/jetty-fcgi/fcgi-server/pom.xml
+++ b/jetty-fcgi/fcgi-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml
index 7ba4bcde503..f780881fb4f 100644
--- a/jetty-fcgi/pom.xml
+++ b/jetty-fcgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml
index 1da2e203d66..4fa915c219a 100644
--- a/jetty-http-spi/pom.xml
+++ b/jetty-http-spi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-http-spi
diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml
index 8b337603200..7e49c6af96e 100644
--- a/jetty-http/pom.xml
+++ b/jetty-http/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-http
diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml
index d3c54b0f55b..e8996018472 100644
--- a/jetty-io/pom.xml
+++ b/jetty-io/pom.xml
@@ -2,7 +2,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-io
diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml
index b1271a47275..a4c44a58b4e 100644
--- a/jetty-jaas/pom.xml
+++ b/jetty-jaas/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jaas
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index 75cf9d1003a..2cac6a3a6dc 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jaspi
diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml
index 554f9879952..257d3697649 100644
--- a/jetty-jmx/pom.xml
+++ b/jetty-jmx/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jmx
diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml
index 97d32b3d729..b6259c06575 100644
--- a/jetty-jndi/pom.xml
+++ b/jetty-jndi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jndi
diff --git a/jetty-jsp/pom.xml b/jetty-jsp/pom.xml
index 907217fda22..e7a32c2c317 100644
--- a/jetty-jsp/pom.xml
+++ b/jetty-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jsp
diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml
index d689239f314..6cdf6947121 100644
--- a/jetty-jspc-maven-plugin/pom.xml
+++ b/jetty-jspc-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-jspc-maven-plugin
diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml
index 3a97b320b77..35240c79b30 100644
--- a/jetty-maven-plugin/pom.xml
+++ b/jetty-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-maven-plugin
diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml
index 6a95f10df04..df866a9ca8c 100644
--- a/jetty-monitor/pom.xml
+++ b/jetty-monitor/pom.xml
@@ -19,7 +19,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-monitor
diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml
index 7cf8d334282..037c67ec8f3 100644
--- a/jetty-nosql/pom.xml
+++ b/jetty-nosql/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-nosql
diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml
index 34628822c1d..a5916d5f17b 100644
--- a/jetty-osgi/jetty-osgi-alpn/pom.xml
+++ b/jetty-osgi/jetty-osgi-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-osgi-alpn
diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
index 48255ac5dbc..4c2805200ca 100644
--- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-osgi-boot-jsp
diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
index c54a23e3603..e5e9f32414d 100644
--- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml
index 3632d73ec28..36e61a40e4c 100644
--- a/jetty-osgi/jetty-osgi-boot/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-osgi-boot
diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml
index 07abfeef57c..6da01f40547 100644
--- a/jetty-osgi/jetty-osgi-httpservice/pom.xml
+++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-httpservice
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index 43be5fa001c..2373c025011 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
org.eclipse.jetty.osgi
jetty-osgi-project
diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml
index 4318ceaca15..5d85ea59beb 100644
--- a/jetty-osgi/test-jetty-osgi-context/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-context/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
test-jetty-osgi-context
diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
index 919df9e015c..12d3af7890e 100644
--- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml
index 0185ebe8b15..dc8b432019c 100644
--- a/jetty-osgi/test-jetty-osgi/pom.xml
+++ b/jetty-osgi/test-jetty-osgi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml
index e19d2548027..6830bd6320b 100644
--- a/jetty-plus/pom.xml
+++ b/jetty-plus/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-plus
diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml
index c61f49e0208..a68318917c9 100644
--- a/jetty-proxy/pom.xml
+++ b/jetty-proxy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-proxy
diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml
index 5f306ec5b54..9eb5670f1c2 100644
--- a/jetty-quickstart/pom.xml
+++ b/jetty-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
org.eclipse.jetty
diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml
index 722b3532260..66878ca11e6 100644
--- a/jetty-rewrite/pom.xml
+++ b/jetty-rewrite/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-rewrite
diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml
index 6a281bc2fda..22910e4c718 100644
--- a/jetty-runner/pom.xml
+++ b/jetty-runner/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-runner
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index 161549408c7..f7acdae242b 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-security
diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml
index 31e3a614ff9..95770c1f248 100644
--- a/jetty-server/pom.xml
+++ b/jetty-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-server
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 9fb6d0a5c52..f774cb5638b 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-servlet
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index 9c9f22f60bf..0f8624429c0 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-servlets
diff --git a/jetty-spdy/pom.xml b/jetty-spdy/pom.xml
index e0ff6da0336..66cacfe3310 100644
--- a/jetty-spdy/pom.xml
+++ b/jetty-spdy/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-alpn-tests/pom.xml b/jetty-spdy/spdy-alpn-tests/pom.xml
index 3a5e4a7ec3e..3fce39ad84c 100644
--- a/jetty-spdy/spdy-alpn-tests/pom.xml
+++ b/jetty-spdy/spdy-alpn-tests/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-client/pom.xml b/jetty-spdy/spdy-client/pom.xml
index 831a77b1a65..c3ddfdae674 100644
--- a/jetty-spdy/spdy-client/pom.xml
+++ b/jetty-spdy/spdy-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-core/pom.xml b/jetty-spdy/spdy-core/pom.xml
index 913d75cd348..ef0a504b78c 100644
--- a/jetty-spdy/spdy-core/pom.xml
+++ b/jetty-spdy/spdy-core/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-example-webapp/pom.xml b/jetty-spdy/spdy-example-webapp/pom.xml
index be251dbce42..0ec8d5d3022 100644
--- a/jetty-spdy/spdy-example-webapp/pom.xml
+++ b/jetty-spdy/spdy-example-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
spdy-example-webapp
diff --git a/jetty-spdy/spdy-http-client-transport/pom.xml b/jetty-spdy/spdy-http-client-transport/pom.xml
index 021dbe9f898..423e7f58fa4 100644
--- a/jetty-spdy/spdy-http-client-transport/pom.xml
+++ b/jetty-spdy/spdy-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-http-common/pom.xml b/jetty-spdy/spdy-http-common/pom.xml
index 389a8d2010a..d8a5b9de38b 100644
--- a/jetty-spdy/spdy-http-common/pom.xml
+++ b/jetty-spdy/spdy-http-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spdy/spdy-http-server/pom.xml b/jetty-spdy/spdy-http-server/pom.xml
index 82672c96843..765d258bd32 100644
--- a/jetty-spdy/spdy-http-server/pom.xml
+++ b/jetty-spdy/spdy-http-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
spdy-http-server
diff --git a/jetty-spdy/spdy-server/pom.xml b/jetty-spdy/spdy-server/pom.xml
index c5ee1f8fbc8..574f6a6416f 100644
--- a/jetty-spdy/spdy-server/pom.xml
+++ b/jetty-spdy/spdy-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.spdy
spdy-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml
index 29fea49994f..7813d92c08f 100644
--- a/jetty-spring/pom.xml
+++ b/jetty-spring/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-spring
diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml
index cb4e1bfd035..4264051ac0c 100644
--- a/jetty-start/pom.xml
+++ b/jetty-start/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-start
diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml
index 73a06f8bacc..7d540f80eb5 100644
--- a/jetty-util-ajax/pom.xml
+++ b/jetty-util-ajax/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-util-ajax
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 6cf16fb4b4d..1be5117b114 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-util
diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml
index f051b308d67..1db6fad5d8e 100644
--- a/jetty-webapp/pom.xml
+++ b/jetty-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-webapp
diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml
index 597865a6a22..6fb9085d2c6 100644
--- a/jetty-websocket/javax-websocket-client-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-client-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml
index eac662a1a23..36151ac90fe 100644
--- a/jetty-websocket/javax-websocket-server-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-server-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml
index 76e77d3426a..9e605c880e9 100644
--- a/jetty-websocket/pom.xml
+++ b/jetty-websocket/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml
index a3f602c8758..53ed39cf45e 100644
--- a/jetty-websocket/websocket-api/pom.xml
+++ b/jetty-websocket/websocket-api/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml
index e209305220f..f28b5b3c300 100644
--- a/jetty-websocket/websocket-client/pom.xml
+++ b/jetty-websocket/websocket-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml
index 932cd8fba5a..caa0e3f7cd4 100644
--- a/jetty-websocket/websocket-common/pom.xml
+++ b/jetty-websocket/websocket-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml
index 3cfd1be132a..6dc6c9443fb 100644
--- a/jetty-websocket/websocket-server/pom.xml
+++ b/jetty-websocket/websocket-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index 2eb44732011..149afc73cc8 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml
index 3e27279cdb2..fb7937b436b 100644
--- a/jetty-xml/pom.xml
+++ b/jetty-xml/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jetty-xml
diff --git a/pom.xml b/pom.xml
index d88ba6783a3..8de7b59f043 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
23
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
Jetty :: Project
http://www.eclipse.org/jetty
pom
diff --git a/tests/pom.xml b/tests/pom.xml
index 04b60c610ed..179ac1eecd8 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty
jetty-project
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
org.eclipse.jetty.tests
diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml
index 159e8d9594f..8dbdc1a6c84 100644
--- a/tests/test-continuation/pom.xml
+++ b/tests/test-continuation/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml
index e8df9e21311..2a5e04c96ce 100644
--- a/tests/test-integration/pom.xml
+++ b/tests/test-integration/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
test-integration
diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml
index 4006050c42a..fc0174820eb 100644
--- a/tests/test-jmx/jmx-webapp-it/pom.xml
+++ b/tests/test-jmx/jmx-webapp-it/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
jmx-webapp-it
diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml
index 3348974e657..16f615a5b9a 100644
--- a/tests/test-jmx/jmx-webapp/pom.xml
+++ b/tests/test-jmx/jmx-webapp/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
jmx-webapp
war
diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml
index 81a549b190b..37a0362f830 100644
--- a/tests/test-jmx/pom.xml
+++ b/tests/test-jmx/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
4.0.0
test-jmx-parent
diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml
index d2b25f9b21a..d7bca2c5c54 100644
--- a/tests/test-loginservice/pom.xml
+++ b/tests/test-loginservice/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-loginservice
Jetty Tests :: Login Service
diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml
index 92c0a2fd071..f803b3fdb48 100644
--- a/tests/test-quickstart/pom.xml
+++ b/tests/test-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml
index 507a5df7a65..0c4f7860756 100644
--- a/tests/test-sessions/pom.xml
+++ b/tests/test-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-sessions-parent
Jetty Tests :: Sessions :: Parent
diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml
index dd781c63404..2b2e4f40ff0 100644
--- a/tests/test-sessions/test-hash-sessions/pom.xml
+++ b/tests/test-sessions/test-hash-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-hash-sessions
Jetty Tests :: Sessions :: Hash
diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml
index 28d08a3ad02..b575067d034 100644
--- a/tests/test-sessions/test-jdbc-sessions/pom.xml
+++ b/tests/test-sessions/test-jdbc-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-jdbc-sessions
Jetty Tests :: Sessions :: JDBC
diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml
index 0825b35578d..fc36e7dd1b9 100644
--- a/tests/test-sessions/test-mongodb-sessions/pom.xml
+++ b/tests/test-sessions/test-mongodb-sessions/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-mongodb-sessions
Jetty Tests :: Sessions :: Mongo
diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml
index 6d5fb172559..cba94f9b101 100644
--- a/tests/test-sessions/test-sessions-common/pom.xml
+++ b/tests/test-sessions/test-sessions-common/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-sessions-common
Jetty Tests :: Sessions :: Common
diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml
index 4e40ae3ff89..b0d115ffdac 100644
--- a/tests/test-webapps/pom.xml
+++ b/tests/test-webapps/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
test-webapps-parent
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index bd4481bd72e..05fa2952602 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-jaas-webapp
Jetty Tests :: WebApp :: JAAS
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index 83506c17649..bad137f6e1a 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml
index fbe5b868f4d..5d406f425b9 100644
--- a/tests/test-webapps/test-jndi-webapp/pom.xml
+++ b/tests/test-webapps/test-jndi-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-jndi-webapp
Jetty Tests :: WebApp :: JNDI
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index 60d5535843a..682ff948114 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
Jetty Tests :: WebApp :: Mock Resources
test-mock-resources
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index 43b10864473..537b6f20791 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -20,7 +20,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml
index 9c8fb1ad5ba..750fde72b0c 100644
--- a/tests/test-webapps/test-servlet-spec/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-servlet-spec-parent
Jetty Tests :: Spec Test WebApp :: Parent
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 cebb3747cb7..541313e9381 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-container-initializer
jar
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 d65d1e7c37e..111339402f3 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
Jetty Tests :: Webapps :: Spec Webapp
test-spec-webapp
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 1c89443455f..f87b1adde79 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar
org.eclipse.jetty.tests
diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml
index f59ad5f9a58..fe53d11eca9 100644
--- a/tests/test-webapps/test-webapp-rfc2616/pom.xml
+++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.2.29.v20191105
+ 9.2.30-SNAPSHOT
test-webapp-rfc2616
Jetty Tests :: WebApp :: RFC2616
From d7dd68d6e9d8ff06a0130e46886c2db5d70784c1 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 11:46:40 -0600
Subject: [PATCH 18/34] Updating to version 9.3.28.v20191105
---
VERSION.txt | 5 +-
aggregates/jetty-all-compact3/pom.xml | 2 +-
aggregates/jetty-all/pom.xml | 2 +-
apache-jsp/pom.xml | 2 +-
apache-jstl/pom.xml | 2 +-
examples/async-rest/async-rest-jar/pom.xml | 2 +-
examples/async-rest/async-rest-webapp/pom.xml | 2 +-
examples/async-rest/pom.xml | 2 +-
examples/embedded/pom.xml | 2 +-
examples/pom.xml | 2 +-
jetty-alpn/jetty-alpn-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-java-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-java-server/pom.xml | 2 +-
jetty-alpn/jetty-alpn-server/pom.xml | 2 +-
jetty-alpn/pom.xml | 2 +-
jetty-annotations/pom.xml | 2 +-
jetty-ant/pom.xml | 2 +-
jetty-bom/pom.xml | 104 +++++++++---------
jetty-cdi/cdi-core/pom.xml | 2 +-
jetty-cdi/cdi-full-servlet/pom.xml | 2 +-
jetty-cdi/cdi-servlet/pom.xml | 2 +-
jetty-cdi/cdi-websocket/pom.xml | 2 +-
jetty-cdi/pom.xml | 2 +-
jetty-cdi/test-cdi-webapp/pom.xml | 2 +-
jetty-client/pom.xml | 2 +-
jetty-continuation/pom.xml | 2 +-
jetty-deploy/pom.xml | 2 +-
jetty-distribution/pom.xml | 2 +-
jetty-documentation/pom.xml | 2 +-
jetty-fcgi/fcgi-client/pom.xml | 2 +-
jetty-fcgi/fcgi-server/pom.xml | 2 +-
jetty-fcgi/pom.xml | 2 +-
.../pom.xml | 2 +-
.../jetty-gcloud-session-manager/pom.xml | 2 +-
jetty-gcloud/pom.xml | 2 +-
jetty-hazelcast/pom.xml | 2 +-
jetty-http-spi/pom.xml | 2 +-
jetty-http/pom.xml | 2 +-
jetty-http2/http2-alpn-tests/pom.xml | 2 +-
jetty-http2/http2-client/pom.xml | 2 +-
jetty-http2/http2-common/pom.xml | 2 +-
jetty-http2/http2-hpack/pom.xml | 2 +-
.../http2-http-client-transport/pom.xml | 2 +-
jetty-http2/http2-server/pom.xml | 2 +-
jetty-http2/pom.xml | 2 +-
jetty-infinispan/pom.xml | 2 +-
jetty-io/pom.xml | 2 +-
jetty-jaas/pom.xml | 2 +-
jetty-jaspi/pom.xml | 2 +-
jetty-jmx/pom.xml | 2 +-
jetty-jndi/pom.xml | 2 +-
jetty-jspc-maven-plugin/pom.xml | 2 +-
jetty-maven-plugin/pom.xml | 2 +-
jetty-monitor/pom.xml | 2 +-
jetty-nosql/pom.xml | 2 +-
jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot/pom.xml | 2 +-
jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +-
jetty-osgi/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-fragment/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi/pom.xml | 2 +-
jetty-plus/pom.xml | 2 +-
jetty-proxy/pom.xml | 2 +-
jetty-quickstart/pom.xml | 2 +-
jetty-rewrite/pom.xml | 2 +-
jetty-runner/pom.xml | 2 +-
jetty-security/pom.xml | 2 +-
jetty-server/pom.xml | 2 +-
jetty-servlet/pom.xml | 2 +-
jetty-servlets/pom.xml | 2 +-
jetty-spring/pom.xml | 2 +-
jetty-start/pom.xml | 2 +-
jetty-util-ajax/pom.xml | 2 +-
jetty-util/pom.xml | 2 +-
jetty-webapp/pom.xml | 2 +-
.../javax-websocket-client-impl/pom.xml | 2 +-
.../javax-websocket-server-impl/pom.xml | 2 +-
jetty-websocket/pom.xml | 2 +-
jetty-websocket/websocket-api/pom.xml | 2 +-
jetty-websocket/websocket-client/pom.xml | 2 +-
jetty-websocket/websocket-common/pom.xml | 2 +-
jetty-websocket/websocket-server/pom.xml | 2 +-
jetty-websocket/websocket-servlet/pom.xml | 2 +-
jetty-xml/pom.xml | 2 +-
pom.xml | 2 +-
tests/pom.xml | 2 +-
tests/test-continuation/pom.xml | 2 +-
tests/test-http-client-transport/pom.xml | 2 +-
tests/test-integration/pom.xml | 2 +-
tests/test-jmx/jmx-webapp-it/pom.xml | 2 +-
tests/test-jmx/jmx-webapp/pom.xml | 2 +-
tests/test-jmx/pom.xml | 2 +-
tests/test-loginservice/pom.xml | 2 +-
tests/test-quickstart/pom.xml | 2 +-
tests/test-sessions/pom.xml | 2 +-
.../test-gcloud-memcached-sessions/pom.xml | 2 +-
.../test-gcloud-sessions/pom.xml | 2 +-
.../test-sessions/test-hash-sessions/pom.xml | 2 +-
.../test-infinispan-sessions/pom.xml | 2 +-
.../test-sessions/test-jdbc-sessions/pom.xml | 2 +-
.../test-mongodb-sessions/pom.xml | 2 +-
.../test-sessions-common/pom.xml | 2 +-
tests/test-webapps/pom.xml | 2 +-
tests/test-webapps/test-jaas-webapp/pom.xml | 2 +-
tests/test-webapps/test-jetty-webapp/pom.xml | 2 +-
tests/test-webapps/test-jndi-webapp/pom.xml | 2 +-
.../test-webapps/test-mock-resources/pom.xml | 2 +-
tests/test-webapps/test-proxy-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/pom.xml | 2 +-
.../test-container-initializer/pom.xml | 2 +-
.../test-spec-webapp/pom.xml | 2 +-
.../test-web-fragment/pom.xml | 2 +-
.../test-webapps/test-webapp-rfc2616/pom.xml | 2 +-
117 files changed, 171 insertions(+), 168 deletions(-)
diff --git a/VERSION.txt b/VERSION.txt
index c6dde8cb6cd..e22a86d509c 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,4 +1,7 @@
-jetty-9.3.28-SNAPSHOT
+jetty-9.3.28.v20191105 - 05 November 2019
+ + 3989 Inform custom ManagedSelector of dead selector via optional
+ onFailedSelect()
+ + 4217 SslConnection.DecryptedEnpoint.flush eternal busy loop
jetty-9.3.27.v20190418 - 18 April 2019
+ 3549 Directory Listing on Windows reveals Resource Base path
diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml
index 382597e6f10..56b424868d2 100644
--- a/aggregates/jetty-all-compact3/pom.xml
+++ b/aggregates/jetty-all-compact3/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../../pom.xml
4.0.0
diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml
index bde1a6fc976..7f0b3fb3451 100644
--- a/aggregates/jetty-all/pom.xml
+++ b/aggregates/jetty-all/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../../pom.xml
4.0.0
diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml
index 4eebb25a68e..f920243d3bd 100644
--- a/apache-jsp/pom.xml
+++ b/apache-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
apache-jsp
diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml
index 11da92d4391..9727ccbb0de 100644
--- a/apache-jstl/pom.xml
+++ b/apache-jstl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
apache-jstl
diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index d019e8f7d45..467b5abb10d 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index d4a043f709b..50be634182a 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml
index 93789c4587d..f4cc7cc43de 100644
--- a/examples/async-rest/pom.xml
+++ b/examples/async-rest/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml
index 050acde9291..9b64fe7722f 100644
--- a/examples/embedded/pom.xml
+++ b/examples/embedded/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/examples/pom.xml b/examples/pom.xml
index 19a96fc75a0..5f727876c6e 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
org.eclipse.jetty.examples
diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml
index 061502b9f84..f3cf4ac5610 100644
--- a/jetty-alpn/jetty-alpn-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-alpn-client
diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml
index c6cce70660e..1cc14e37c5e 100644
--- a/jetty-alpn/jetty-alpn-java-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-java-client/pom.xml
@@ -6,7 +6,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml
index c63483e6d3c..2f9dcda7aa7 100644
--- a/jetty-alpn/jetty-alpn-java-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-java-server/pom.xml
@@ -5,7 +5,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml
index eba7a89f2f4..6dde73a10bd 100644
--- a/jetty-alpn/jetty-alpn-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-alpn-server
diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml
index b65383a9d1b..cf395c9f100 100644
--- a/jetty-alpn/pom.xml
+++ b/jetty-alpn/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-alpn-parent
diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml
index 7ebe9a5b758..50d34b0c083 100644
--- a/jetty-annotations/pom.xml
+++ b/jetty-annotations/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-annotations
diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml
index 7ea53292796..357ff256332 100644
--- a/jetty-ant/pom.xml
+++ b/jetty-ant/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-ant
diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml
index fd53ed219ea..a3b2ea15742 100644
--- a/jetty-bom/pom.xml
+++ b/jetty-bom/pom.xml
@@ -9,7 +9,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
@@ -53,258 +53,258 @@
org.eclipse.jetty
jetty-annotations
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
cdi-core
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
cdi-servlet
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
cdi-websocket
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-client
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-continuation
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.fcgi
fcgi-server
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.fcgi
fcgi-server
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-gcloud-memcached-session-manager
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-gcloud-session-manager
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-hazelcast
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-http
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.http2
http2-client
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.http2
http2-common
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.http2
http2-hpack
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.http2
http2-http-client-transport
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty.http2
http2-server
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-http-spi
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-infinispan
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-io
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-jaas
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-jaspi
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-jmx
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-jndi
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-monitor
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-nosql
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-osgi-boot
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-osgi-boot-jsp
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-osgi-boot-warurl
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-plus
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-proxy
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-quickstart
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-rewrite
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-security
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-server
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-servlet
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-servlets
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-spring
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-util
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-util-ajax
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-webapp
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-client-impl
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-server-impl
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-api
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-client
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-common
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-server
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
javax-websocket-servlet
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-xml
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
org.eclipse.jetty
jetty-distribution
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
zip
org.eclipse.jetty
jetty-distribution
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
tar.gz
diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml
index 674bbedbc1d..3625ecb4353 100644
--- a/jetty-cdi/cdi-core/pom.xml
+++ b/jetty-cdi/cdi-core/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
cdi-core
diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml
index 72812b8902b..5e8c555d793 100644
--- a/jetty-cdi/cdi-full-servlet/pom.xml
+++ b/jetty-cdi/cdi-full-servlet/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
cdi-full-servlet
diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml
index 2ac058b7381..cfa2fb08fa6 100644
--- a/jetty-cdi/cdi-servlet/pom.xml
+++ b/jetty-cdi/cdi-servlet/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
cdi-servlet
diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml
index 76c5697cd47..ae0edf78b45 100644
--- a/jetty-cdi/cdi-websocket/pom.xml
+++ b/jetty-cdi/cdi-websocket/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
cdi-websocket
diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml
index dc60a53d7a1..8e9f2fbb030 100644
--- a/jetty-cdi/pom.xml
+++ b/jetty-cdi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
org.eclipse.jetty.cdi
diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml
index 3b9a494f219..e1a8e5d1306 100644
--- a/jetty-cdi/test-cdi-webapp/pom.xml
+++ b/jetty-cdi/test-cdi-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
test-cdi-webapp
diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml
index f92f6f70b8a..ff11ff9f4e0 100644
--- a/jetty-client/pom.xml
+++ b/jetty-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml
index 5ba41c46af7..d6e01ef626b 100644
--- a/jetty-continuation/pom.xml
+++ b/jetty-continuation/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-continuation
diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml
index dcaa56891b2..dced138555e 100644
--- a/jetty-deploy/pom.xml
+++ b/jetty-deploy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-deploy
diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml
index ffe2aea72c1..c1abc8d32c5 100644
--- a/jetty-distribution/pom.xml
+++ b/jetty-distribution/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-distribution
diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml
index f6f9c9b26e7..205053a7526 100644
--- a/jetty-documentation/pom.xml
+++ b/jetty-documentation/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
jetty-documentation
Jetty :: Documentation
diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml
index e43b27a6b68..f0a29b8c4fe 100644
--- a/jetty-fcgi/fcgi-client/pom.xml
+++ b/jetty-fcgi/fcgi-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml
index f2b54eec56a..cdce742b858 100644
--- a/jetty-fcgi/fcgi-server/pom.xml
+++ b/jetty-fcgi/fcgi-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml
index 3a97812f431..0248aacd9ed 100644
--- a/jetty-fcgi/pom.xml
+++ b/jetty-fcgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
index 56f9035b148..de0d0305aac 100644
--- a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
+++ b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.gcloud
gcloud-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
index 66a84995b52..42665410402 100644
--- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
+++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.gcloud
gcloud-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml
index 9e3cd3b6a26..682db3c62c0 100644
--- a/jetty-gcloud/pom.xml
+++ b/jetty-gcloud/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-hazelcast/pom.xml b/jetty-hazelcast/pom.xml
index 5948601dc80..f4faef9672a 100644
--- a/jetty-hazelcast/pom.xml
+++ b/jetty-hazelcast/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-hazelcast
diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml
index 79e468f5f78..581e24d0134 100644
--- a/jetty-http-spi/pom.xml
+++ b/jetty-http-spi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-http-spi
diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml
index a3a63ea04c9..0bb460960d1 100644
--- a/jetty-http/pom.xml
+++ b/jetty-http/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-http
diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml
index a4e6ffdd199..e841505142f 100644
--- a/jetty-http2/http2-alpn-tests/pom.xml
+++ b/jetty-http2/http2-alpn-tests/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml
index 7a0cb2f174e..7017ba09dee 100644
--- a/jetty-http2/http2-client/pom.xml
+++ b/jetty-http2/http2-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml
index cfe94bf72be..b980c4023d3 100644
--- a/jetty-http2/http2-common/pom.xml
+++ b/jetty-http2/http2-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml
index 2a2492fcce5..c6ffda44eeb 100644
--- a/jetty-http2/http2-hpack/pom.xml
+++ b/jetty-http2/http2-hpack/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml
index 70faffdad1b..35a0fdeba44 100644
--- a/jetty-http2/http2-http-client-transport/pom.xml
+++ b/jetty-http2/http2-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml
index 345dcf0bd6c..c2d35f74498 100644
--- a/jetty-http2/http2-server/pom.xml
+++ b/jetty-http2/http2-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml
index 6b31243005d..7a634c6bb7e 100644
--- a/jetty-http2/pom.xml
+++ b/jetty-http2/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml
index b5e60311e50..686dce65dcc 100644
--- a/jetty-infinispan/pom.xml
+++ b/jetty-infinispan/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-infinispan
diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml
index 1eedd696a78..bf69e03cc33 100644
--- a/jetty-io/pom.xml
+++ b/jetty-io/pom.xml
@@ -2,7 +2,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-io
diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml
index c0f3f7df0cc..ccad75a8372 100644
--- a/jetty-jaas/pom.xml
+++ b/jetty-jaas/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-jaas
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index 56e3292005b..83c6754f104 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-jaspi
diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml
index 91c7f6f0017..4598f5e0b68 100644
--- a/jetty-jmx/pom.xml
+++ b/jetty-jmx/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-jmx
diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml
index 7c339d93dd7..e4857100e34 100644
--- a/jetty-jndi/pom.xml
+++ b/jetty-jndi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-jndi
diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml
index f9a2d1b3151..1390f8838e3 100644
--- a/jetty-jspc-maven-plugin/pom.xml
+++ b/jetty-jspc-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-jspc-maven-plugin
diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml
index c88cfe87ea4..96c35c8b87d 100644
--- a/jetty-maven-plugin/pom.xml
+++ b/jetty-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-maven-plugin
diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml
index 61e92894084..53bc4407128 100644
--- a/jetty-monitor/pom.xml
+++ b/jetty-monitor/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-monitor
diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml
index d5fc118c4d2..6ebc0c2f131 100644
--- a/jetty-nosql/pom.xml
+++ b/jetty-nosql/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-nosql
diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml
index 3bccbfd5157..01c80dce267 100644
--- a/jetty-osgi/jetty-osgi-alpn/pom.xml
+++ b/jetty-osgi/jetty-osgi-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-osgi-alpn
diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
index e56f80285b3..e9a44762dbd 100644
--- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-osgi-boot-jsp
diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
index bc2af9d56b2..4c19b9ef479 100644
--- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml
index 6b20abe0858..b0ed9841110 100644
--- a/jetty-osgi/jetty-osgi-boot/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-osgi-boot
diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml
index ad56d13b768..a7e8ed156fb 100644
--- a/jetty-osgi/jetty-osgi-httpservice/pom.xml
+++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-httpservice
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index da2afea2400..652cf4eced4 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml
index e44827dd38e..ccd061ee907 100644
--- a/jetty-osgi/test-jetty-osgi-context/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-context/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
test-jetty-osgi-context
diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml
index 3e5956ce98a..591558496d2 100644
--- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
index e3e976188c2..669594dd73e 100644
--- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml
index 2a2f1bb4dd1..61bcae62628 100644
--- a/jetty-osgi/test-jetty-osgi/pom.xml
+++ b/jetty-osgi/test-jetty-osgi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml
index 96a295be0a1..5501d415e9f 100644
--- a/jetty-plus/pom.xml
+++ b/jetty-plus/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-plus
diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml
index 14b4c0eeab1..ec87ed62b9e 100644
--- a/jetty-proxy/pom.xml
+++ b/jetty-proxy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-proxy
diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml
index c57715f888e..e51de508268 100644
--- a/jetty-quickstart/pom.xml
+++ b/jetty-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
org.eclipse.jetty
diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml
index 5088e3fcf41..97da9cc4347 100644
--- a/jetty-rewrite/pom.xml
+++ b/jetty-rewrite/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-rewrite
diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml
index 77d1b464dcd..1d85d8b4ac3 100644
--- a/jetty-runner/pom.xml
+++ b/jetty-runner/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-runner
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index 43651ee9439..d594293acfc 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-security
diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml
index 90380727f15..00cffd6cfdb 100644
--- a/jetty-server/pom.xml
+++ b/jetty-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-server
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 4fd6b7d7f01..8d8bbc0ca88 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-servlet
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index 53e8ab75ff9..1515ee26616 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-servlets
diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml
index 4faa1e7e016..4c1d3fa5240 100644
--- a/jetty-spring/pom.xml
+++ b/jetty-spring/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-spring
diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml
index 1c9742e7e6d..6f14b5fa92c 100644
--- a/jetty-start/pom.xml
+++ b/jetty-start/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-start
diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml
index de1f18bef36..41fd1b2fc6a 100644
--- a/jetty-util-ajax/pom.xml
+++ b/jetty-util-ajax/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-util-ajax
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 2d1f934ffdd..4bc3a2e3c88 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-util
diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml
index dfb72d12f58..c358eb461a7 100644
--- a/jetty-webapp/pom.xml
+++ b/jetty-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-webapp
diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml
index b87cecead1f..245cf4289c6 100644
--- a/jetty-websocket/javax-websocket-client-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-client-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml
index 905bced4401..620c664486d 100644
--- a/jetty-websocket/javax-websocket-server-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-server-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml
index 0ba0e8b3cfe..14ce2695bbb 100644
--- a/jetty-websocket/pom.xml
+++ b/jetty-websocket/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml
index 5cbe76512c0..59167474934 100644
--- a/jetty-websocket/websocket-api/pom.xml
+++ b/jetty-websocket/websocket-api/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml
index dba31ff3af6..1a825126ffc 100644
--- a/jetty-websocket/websocket-client/pom.xml
+++ b/jetty-websocket/websocket-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml
index bc44345795b..f94a9945940 100644
--- a/jetty-websocket/websocket-common/pom.xml
+++ b/jetty-websocket/websocket-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml
index 947f875313c..fb37f2fdeee 100644
--- a/jetty-websocket/websocket-server/pom.xml
+++ b/jetty-websocket/websocket-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index 0588522bc9b..b3aa45003b9 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml
index 4c11c7c113f..6d4ceb18163 100644
--- a/jetty-xml/pom.xml
+++ b/jetty-xml/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jetty-xml
diff --git a/pom.xml b/pom.xml
index b4fb5feed81..32e0ab1ea0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
4.0.0
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
Jetty :: Project
http://www.eclipse.org/jetty
pom
diff --git a/tests/pom.xml b/tests/pom.xml
index 9caf7af0dba..41cf0757060 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
org.eclipse.jetty.tests
diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml
index 1e734f1dc21..bccaf487046 100644
--- a/tests/test-continuation/pom.xml
+++ b/tests/test-continuation/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml
index 68a9f729f16..a5e898a954b 100644
--- a/tests/test-http-client-transport/pom.xml
+++ b/tests/test-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml
index 4b300ba8470..13c2f0d3208 100644
--- a/tests/test-integration/pom.xml
+++ b/tests/test-integration/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
test-integration
diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml
index 73356446691..be01a2afed4 100644
--- a/tests/test-jmx/jmx-webapp-it/pom.xml
+++ b/tests/test-jmx/jmx-webapp-it/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
jmx-webapp-it
diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml
index ec4c0253d85..2f4d4993157 100644
--- a/tests/test-jmx/jmx-webapp/pom.xml
+++ b/tests/test-jmx/jmx-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
jmx-webapp
war
diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml
index 13813c75ed4..dcf2cb4ce20 100644
--- a/tests/test-jmx/pom.xml
+++ b/tests/test-jmx/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
4.0.0
test-jmx-parent
diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml
index f041e7c384e..1d717f5c83b 100644
--- a/tests/test-loginservice/pom.xml
+++ b/tests/test-loginservice/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-loginservice
Jetty Tests :: Login Service
diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml
index 8d7c4c9720f..52eb9e250a5 100644
--- a/tests/test-quickstart/pom.xml
+++ b/tests/test-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml
index b29e16d6270..dc81ecfb463 100644
--- a/tests/test-sessions/pom.xml
+++ b/tests/test-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-sessions-parent
Jetty Tests :: Sessions :: Parent
diff --git a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
index adfe6e24f2f..4833aeb495a 100644
--- a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
+++ b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-gcloud-memcached-sessions
Jetty Tests :: Sessions :: GCloud with Memcached
diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml
index f8bae1e0526..40f49001aaf 100644
--- a/tests/test-sessions/test-gcloud-sessions/pom.xml
+++ b/tests/test-sessions/test-gcloud-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-gcloud-sessions
Jetty Tests :: Sessions :: GCloud
diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml
index 37c41ca1499..7c8108dc278 100644
--- a/tests/test-sessions/test-hash-sessions/pom.xml
+++ b/tests/test-sessions/test-hash-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-hash-sessions
Jetty Tests :: Sessions :: Hash
diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml
index a71a101ea10..811960741ba 100644
--- a/tests/test-sessions/test-infinispan-sessions/pom.xml
+++ b/tests/test-sessions/test-infinispan-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-infinispan-sessions
Jetty Tests :: Sessions :: Infinispan
diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml
index fb7d07574d0..772d35c9ccb 100644
--- a/tests/test-sessions/test-jdbc-sessions/pom.xml
+++ b/tests/test-sessions/test-jdbc-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-jdbc-sessions
Jetty Tests :: Sessions :: JDBC
diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml
index 0aca145eb43..fed1e9446cb 100644
--- a/tests/test-sessions/test-mongodb-sessions/pom.xml
+++ b/tests/test-sessions/test-mongodb-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-mongodb-sessions
Jetty Tests :: Sessions :: Mongo
diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml
index 0679885f0bc..f3b3cdb45b5 100644
--- a/tests/test-sessions/test-sessions-common/pom.xml
+++ b/tests/test-sessions/test-sessions-common/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-sessions-common
Jetty Tests :: Sessions :: Common
diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml
index 1194682202c..8d7c35d0615 100644
--- a/tests/test-webapps/pom.xml
+++ b/tests/test-webapps/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
test-webapps-parent
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index 7b83acf9fb3..bd7cbb72044 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-jaas-webapp
Jetty Tests :: WebApp :: JAAS
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index 265ee6d54ab..c543277b56d 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml
index f7617ad84f6..95e318624ed 100644
--- a/tests/test-webapps/test-jndi-webapp/pom.xml
+++ b/tests/test-webapps/test-jndi-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-jndi-webapp
Jetty Tests :: WebApp :: JNDI
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index 57a1efa55e0..c948c507f1e 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
Jetty Tests :: WebApp :: Mock Resources
test-mock-resources
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index c5c1f69b10a..b9358f9a08d 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml
index afeaeb604e9..ea05e1ba61e 100644
--- a/tests/test-webapps/test-servlet-spec/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-servlet-spec-parent
Jetty Tests :: Spec Test WebApp :: Parent
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 4ab92d31865..8a4faf7d56a 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-container-initializer
jar
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 872621793cd..d17b85e6ea6 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
Jetty Tests :: Webapps :: Spec Webapp
test-spec-webapp
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 02e8baf8e91..f4331690dae 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar
diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml
index 22f693f04ca..d8d627c3337 100644
--- a/tests/test-webapps/test-webapp-rfc2616/pom.xml
+++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28-SNAPSHOT
+ 9.3.28.v20191105
test-webapp-rfc2616
Jetty Tests :: WebApp :: RFC2616
From 43d95cd984d2150dbd8b402747d47b82dfc4e282 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 13:02:10 -0600
Subject: [PATCH 19/34] Updating to version 9.3.29-SNAPSHOT
---
VERSION.txt | 2 +
aggregates/jetty-all-compact3/pom.xml | 2 +-
aggregates/jetty-all/pom.xml | 2 +-
apache-jsp/pom.xml | 2 +-
apache-jstl/pom.xml | 2 +-
examples/async-rest/async-rest-jar/pom.xml | 2 +-
examples/async-rest/async-rest-webapp/pom.xml | 2 +-
examples/async-rest/pom.xml | 2 +-
examples/embedded/pom.xml | 2 +-
examples/pom.xml | 2 +-
jetty-alpn/jetty-alpn-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-java-client/pom.xml | 2 +-
jetty-alpn/jetty-alpn-java-server/pom.xml | 2 +-
jetty-alpn/jetty-alpn-server/pom.xml | 2 +-
jetty-alpn/pom.xml | 2 +-
jetty-annotations/pom.xml | 2 +-
jetty-ant/pom.xml | 2 +-
jetty-bom/pom.xml | 104 +++++++++---------
jetty-cdi/cdi-core/pom.xml | 2 +-
jetty-cdi/cdi-full-servlet/pom.xml | 2 +-
jetty-cdi/cdi-servlet/pom.xml | 2 +-
jetty-cdi/cdi-websocket/pom.xml | 2 +-
jetty-cdi/pom.xml | 2 +-
jetty-cdi/test-cdi-webapp/pom.xml | 2 +-
jetty-client/pom.xml | 2 +-
jetty-continuation/pom.xml | 2 +-
jetty-deploy/pom.xml | 2 +-
jetty-distribution/pom.xml | 2 +-
jetty-documentation/pom.xml | 2 +-
jetty-fcgi/fcgi-client/pom.xml | 2 +-
jetty-fcgi/fcgi-server/pom.xml | 2 +-
jetty-fcgi/pom.xml | 2 +-
.../pom.xml | 2 +-
.../jetty-gcloud-session-manager/pom.xml | 2 +-
jetty-gcloud/pom.xml | 2 +-
jetty-hazelcast/pom.xml | 2 +-
jetty-http-spi/pom.xml | 2 +-
jetty-http/pom.xml | 2 +-
jetty-http2/http2-alpn-tests/pom.xml | 2 +-
jetty-http2/http2-client/pom.xml | 2 +-
jetty-http2/http2-common/pom.xml | 2 +-
jetty-http2/http2-hpack/pom.xml | 2 +-
.../http2-http-client-transport/pom.xml | 2 +-
jetty-http2/http2-server/pom.xml | 2 +-
jetty-http2/pom.xml | 2 +-
jetty-infinispan/pom.xml | 2 +-
jetty-io/pom.xml | 2 +-
jetty-jaas/pom.xml | 2 +-
jetty-jaspi/pom.xml | 2 +-
jetty-jmx/pom.xml | 2 +-
jetty-jndi/pom.xml | 2 +-
jetty-jspc-maven-plugin/pom.xml | 2 +-
jetty-maven-plugin/pom.xml | 2 +-
jetty-monitor/pom.xml | 2 +-
jetty-nosql/pom.xml | 2 +-
jetty-osgi/jetty-osgi-alpn/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 +-
jetty-osgi/jetty-osgi-boot/pom.xml | 2 +-
jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 +-
jetty-osgi/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-context/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-fragment/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi-webapp/pom.xml | 2 +-
jetty-osgi/test-jetty-osgi/pom.xml | 2 +-
jetty-plus/pom.xml | 2 +-
jetty-proxy/pom.xml | 2 +-
jetty-quickstart/pom.xml | 2 +-
jetty-rewrite/pom.xml | 2 +-
jetty-runner/pom.xml | 2 +-
jetty-security/pom.xml | 2 +-
jetty-server/pom.xml | 2 +-
jetty-servlet/pom.xml | 2 +-
jetty-servlets/pom.xml | 2 +-
jetty-spring/pom.xml | 2 +-
jetty-start/pom.xml | 2 +-
jetty-util-ajax/pom.xml | 2 +-
jetty-util/pom.xml | 2 +-
jetty-webapp/pom.xml | 2 +-
.../javax-websocket-client-impl/pom.xml | 2 +-
.../javax-websocket-server-impl/pom.xml | 2 +-
jetty-websocket/pom.xml | 2 +-
jetty-websocket/websocket-api/pom.xml | 2 +-
jetty-websocket/websocket-client/pom.xml | 2 +-
jetty-websocket/websocket-common/pom.xml | 2 +-
jetty-websocket/websocket-server/pom.xml | 2 +-
jetty-websocket/websocket-servlet/pom.xml | 2 +-
jetty-xml/pom.xml | 2 +-
pom.xml | 2 +-
tests/pom.xml | 2 +-
tests/test-continuation/pom.xml | 2 +-
tests/test-http-client-transport/pom.xml | 2 +-
tests/test-integration/pom.xml | 2 +-
tests/test-jmx/jmx-webapp-it/pom.xml | 2 +-
tests/test-jmx/jmx-webapp/pom.xml | 2 +-
tests/test-jmx/pom.xml | 2 +-
tests/test-loginservice/pom.xml | 2 +-
tests/test-quickstart/pom.xml | 2 +-
tests/test-sessions/pom.xml | 2 +-
.../test-gcloud-memcached-sessions/pom.xml | 2 +-
.../test-gcloud-sessions/pom.xml | 2 +-
.../test-sessions/test-hash-sessions/pom.xml | 2 +-
.../test-infinispan-sessions/pom.xml | 2 +-
.../test-sessions/test-jdbc-sessions/pom.xml | 2 +-
.../test-mongodb-sessions/pom.xml | 2 +-
.../test-sessions-common/pom.xml | 2 +-
tests/test-webapps/pom.xml | 2 +-
tests/test-webapps/test-jaas-webapp/pom.xml | 2 +-
tests/test-webapps/test-jetty-webapp/pom.xml | 2 +-
tests/test-webapps/test-jndi-webapp/pom.xml | 2 +-
.../test-webapps/test-mock-resources/pom.xml | 2 +-
tests/test-webapps/test-proxy-webapp/pom.xml | 2 +-
tests/test-webapps/test-servlet-spec/pom.xml | 2 +-
.../test-container-initializer/pom.xml | 2 +-
.../test-spec-webapp/pom.xml | 2 +-
.../test-web-fragment/pom.xml | 2 +-
.../test-webapps/test-webapp-rfc2616/pom.xml | 2 +-
117 files changed, 169 insertions(+), 167 deletions(-)
diff --git a/VERSION.txt b/VERSION.txt
index e22a86d509c..e421cd7c378 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,3 +1,5 @@
+jetty-9.3.29-SNAPSHOT
+
jetty-9.3.28.v20191105 - 05 November 2019
+ 3989 Inform custom ManagedSelector of dead selector via optional
onFailedSelect()
diff --git a/aggregates/jetty-all-compact3/pom.xml b/aggregates/jetty-all-compact3/pom.xml
index 56b424868d2..39542c5eda1 100644
--- a/aggregates/jetty-all-compact3/pom.xml
+++ b/aggregates/jetty-all-compact3/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../../pom.xml
4.0.0
diff --git a/aggregates/jetty-all/pom.xml b/aggregates/jetty-all/pom.xml
index 7f0b3fb3451..3ca431a8b9e 100644
--- a/aggregates/jetty-all/pom.xml
+++ b/aggregates/jetty-all/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../../pom.xml
4.0.0
diff --git a/apache-jsp/pom.xml b/apache-jsp/pom.xml
index f920243d3bd..3e48b20654c 100644
--- a/apache-jsp/pom.xml
+++ b/apache-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
apache-jsp
diff --git a/apache-jstl/pom.xml b/apache-jstl/pom.xml
index 9727ccbb0de..689d792e1a7 100644
--- a/apache-jstl/pom.xml
+++ b/apache-jstl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
apache-jstl
diff --git a/examples/async-rest/async-rest-jar/pom.xml b/examples/async-rest/async-rest-jar/pom.xml
index 467b5abb10d..8cdee041b71 100644
--- a/examples/async-rest/async-rest-jar/pom.xml
+++ b/examples/async-rest/async-rest-jar/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/async-rest-webapp/pom.xml b/examples/async-rest/async-rest-webapp/pom.xml
index 50be634182a..01d0d6b7647 100644
--- a/examples/async-rest/async-rest-webapp/pom.xml
+++ b/examples/async-rest/async-rest-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
example-async-rest
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
org.eclipse.jetty.example-async-rest
diff --git a/examples/async-rest/pom.xml b/examples/async-rest/pom.xml
index f4cc7cc43de..6351d3121e1 100644
--- a/examples/async-rest/pom.xml
+++ b/examples/async-rest/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/examples/embedded/pom.xml b/examples/embedded/pom.xml
index 9b64fe7722f..b8c4b3023dc 100644
--- a/examples/embedded/pom.xml
+++ b/examples/embedded/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.examples
examples-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/examples/pom.xml b/examples/pom.xml
index 5f727876c6e..b37513ce886 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
org.eclipse.jetty.examples
diff --git a/jetty-alpn/jetty-alpn-client/pom.xml b/jetty-alpn/jetty-alpn-client/pom.xml
index f3cf4ac5610..9be80f5f4ea 100644
--- a/jetty-alpn/jetty-alpn-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-alpn-client
diff --git a/jetty-alpn/jetty-alpn-java-client/pom.xml b/jetty-alpn/jetty-alpn-java-client/pom.xml
index 1cc14e37c5e..3907aff3a68 100644
--- a/jetty-alpn/jetty-alpn-java-client/pom.xml
+++ b/jetty-alpn/jetty-alpn-java-client/pom.xml
@@ -6,7 +6,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-alpn/jetty-alpn-java-server/pom.xml b/jetty-alpn/jetty-alpn-java-server/pom.xml
index 2f9dcda7aa7..c3e527de30e 100644
--- a/jetty-alpn/jetty-alpn-java-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-java-server/pom.xml
@@ -5,7 +5,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-alpn/jetty-alpn-server/pom.xml b/jetty-alpn/jetty-alpn-server/pom.xml
index 6dde73a10bd..5be9d698912 100644
--- a/jetty-alpn/jetty-alpn-server/pom.xml
+++ b/jetty-alpn/jetty-alpn-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-alpn-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-alpn-server
diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml
index cf395c9f100..5d2ac1cbfb5 100644
--- a/jetty-alpn/pom.xml
+++ b/jetty-alpn/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-alpn-parent
diff --git a/jetty-annotations/pom.xml b/jetty-annotations/pom.xml
index 50d34b0c083..178d9cf4df0 100644
--- a/jetty-annotations/pom.xml
+++ b/jetty-annotations/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-annotations
diff --git a/jetty-ant/pom.xml b/jetty-ant/pom.xml
index 357ff256332..0390bb78ed3 100644
--- a/jetty-ant/pom.xml
+++ b/jetty-ant/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-ant
diff --git a/jetty-bom/pom.xml b/jetty-bom/pom.xml
index a3b2ea15742..351482f6972 100644
--- a/jetty-bom/pom.xml
+++ b/jetty-bom/pom.xml
@@ -9,7 +9,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
@@ -53,258 +53,258 @@
org.eclipse.jetty
jetty-annotations
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
cdi-core
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
cdi-servlet
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
cdi-websocket
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-client
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-continuation
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.fcgi
fcgi-server
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.fcgi
fcgi-server
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-gcloud-memcached-session-manager
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-gcloud-session-manager
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-hazelcast
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-http
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.http2
http2-client
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.http2
http2-common
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.http2
http2-hpack
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.http2
http2-http-client-transport
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty.http2
http2-server
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-http-spi
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-infinispan
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-io
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-jaas
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-jaspi
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-jmx
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-jndi
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-monitor
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-nosql
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-osgi-boot
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-osgi-boot-jsp
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-osgi-boot-warurl
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-plus
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-proxy
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-quickstart
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-rewrite
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-security
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-server
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-servlet
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-servlets
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-spring
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-util
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-util-ajax
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-webapp
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-client-impl
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-server-impl
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-api
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-client
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-common
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-server
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
javax-websocket-servlet
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-xml
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
org.eclipse.jetty
jetty-distribution
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
zip
org.eclipse.jetty
jetty-distribution
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
tar.gz
diff --git a/jetty-cdi/cdi-core/pom.xml b/jetty-cdi/cdi-core/pom.xml
index 3625ecb4353..59c36443375 100644
--- a/jetty-cdi/cdi-core/pom.xml
+++ b/jetty-cdi/cdi-core/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
cdi-core
diff --git a/jetty-cdi/cdi-full-servlet/pom.xml b/jetty-cdi/cdi-full-servlet/pom.xml
index 5e8c555d793..73c5d8ebf26 100644
--- a/jetty-cdi/cdi-full-servlet/pom.xml
+++ b/jetty-cdi/cdi-full-servlet/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
cdi-full-servlet
diff --git a/jetty-cdi/cdi-servlet/pom.xml b/jetty-cdi/cdi-servlet/pom.xml
index cfa2fb08fa6..9cf39b048e1 100644
--- a/jetty-cdi/cdi-servlet/pom.xml
+++ b/jetty-cdi/cdi-servlet/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
cdi-servlet
diff --git a/jetty-cdi/cdi-websocket/pom.xml b/jetty-cdi/cdi-websocket/pom.xml
index ae0edf78b45..f8505ead0e9 100644
--- a/jetty-cdi/cdi-websocket/pom.xml
+++ b/jetty-cdi/cdi-websocket/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
cdi-websocket
diff --git a/jetty-cdi/pom.xml b/jetty-cdi/pom.xml
index 8e9f2fbb030..df93ce3d8af 100644
--- a/jetty-cdi/pom.xml
+++ b/jetty-cdi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
org.eclipse.jetty.cdi
diff --git a/jetty-cdi/test-cdi-webapp/pom.xml b/jetty-cdi/test-cdi-webapp/pom.xml
index e1a8e5d1306..9425921f454 100644
--- a/jetty-cdi/test-cdi-webapp/pom.xml
+++ b/jetty-cdi/test-cdi-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.cdi
jetty-cdi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
test-cdi-webapp
diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml
index ff11ff9f4e0..c44fe3748c0 100644
--- a/jetty-client/pom.xml
+++ b/jetty-client/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-continuation/pom.xml b/jetty-continuation/pom.xml
index d6e01ef626b..fac65ea0bc8 100644
--- a/jetty-continuation/pom.xml
+++ b/jetty-continuation/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-continuation
diff --git a/jetty-deploy/pom.xml b/jetty-deploy/pom.xml
index dced138555e..b9239a20093 100644
--- a/jetty-deploy/pom.xml
+++ b/jetty-deploy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-deploy
diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml
index c1abc8d32c5..59212957f15 100644
--- a/jetty-distribution/pom.xml
+++ b/jetty-distribution/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-distribution
diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml
index 205053a7526..bc5d8c59d4f 100644
--- a/jetty-documentation/pom.xml
+++ b/jetty-documentation/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
jetty-documentation
Jetty :: Documentation
diff --git a/jetty-fcgi/fcgi-client/pom.xml b/jetty-fcgi/fcgi-client/pom.xml
index f0a29b8c4fe..2a1f2241526 100644
--- a/jetty-fcgi/fcgi-client/pom.xml
+++ b/jetty-fcgi/fcgi-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-fcgi/fcgi-server/pom.xml b/jetty-fcgi/fcgi-server/pom.xml
index cdce742b858..2cb46464421 100644
--- a/jetty-fcgi/fcgi-server/pom.xml
+++ b/jetty-fcgi/fcgi-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.fcgi
fcgi-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-fcgi/pom.xml b/jetty-fcgi/pom.xml
index 0248aacd9ed..a9028cadad7 100644
--- a/jetty-fcgi/pom.xml
+++ b/jetty-fcgi/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
index de0d0305aac..e3ffc6b8dca 100644
--- a/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
+++ b/jetty-gcloud/jetty-gcloud-memcached-session-manager/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.gcloud
gcloud-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
index 42665410402..f1419a7f384 100644
--- a/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
+++ b/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.gcloud
gcloud-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-gcloud/pom.xml b/jetty-gcloud/pom.xml
index 682db3c62c0..f02b6c229fb 100644
--- a/jetty-gcloud/pom.xml
+++ b/jetty-gcloud/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-hazelcast/pom.xml b/jetty-hazelcast/pom.xml
index f4faef9672a..94ded5b5529 100644
--- a/jetty-hazelcast/pom.xml
+++ b/jetty-hazelcast/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-hazelcast
diff --git a/jetty-http-spi/pom.xml b/jetty-http-spi/pom.xml
index 581e24d0134..0d5efa74ebe 100644
--- a/jetty-http-spi/pom.xml
+++ b/jetty-http-spi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-http-spi
diff --git a/jetty-http/pom.xml b/jetty-http/pom.xml
index 0bb460960d1..b2012e9c2cd 100644
--- a/jetty-http/pom.xml
+++ b/jetty-http/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-http
diff --git a/jetty-http2/http2-alpn-tests/pom.xml b/jetty-http2/http2-alpn-tests/pom.xml
index e841505142f..4b38d727072 100644
--- a/jetty-http2/http2-alpn-tests/pom.xml
+++ b/jetty-http2/http2-alpn-tests/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/http2-client/pom.xml b/jetty-http2/http2-client/pom.xml
index 7017ba09dee..ce2f4c64424 100644
--- a/jetty-http2/http2-client/pom.xml
+++ b/jetty-http2/http2-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/http2-common/pom.xml b/jetty-http2/http2-common/pom.xml
index b980c4023d3..1afed248569 100644
--- a/jetty-http2/http2-common/pom.xml
+++ b/jetty-http2/http2-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/http2-hpack/pom.xml b/jetty-http2/http2-hpack/pom.xml
index c6ffda44eeb..2e26b0b9ef0 100644
--- a/jetty-http2/http2-hpack/pom.xml
+++ b/jetty-http2/http2-hpack/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/http2-http-client-transport/pom.xml b/jetty-http2/http2-http-client-transport/pom.xml
index 35a0fdeba44..8a65cdbeaa9 100644
--- a/jetty-http2/http2-http-client-transport/pom.xml
+++ b/jetty-http2/http2-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/http2-server/pom.xml b/jetty-http2/http2-server/pom.xml
index c2d35f74498..e5271d9e4dc 100644
--- a/jetty-http2/http2-server/pom.xml
+++ b/jetty-http2/http2-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.http2
http2-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-http2/pom.xml b/jetty-http2/pom.xml
index 7a634c6bb7e..3cb77b09209 100644
--- a/jetty-http2/pom.xml
+++ b/jetty-http2/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-infinispan/pom.xml b/jetty-infinispan/pom.xml
index 686dce65dcc..3fba719c772 100644
--- a/jetty-infinispan/pom.xml
+++ b/jetty-infinispan/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-infinispan
diff --git a/jetty-io/pom.xml b/jetty-io/pom.xml
index bf69e03cc33..37caf331e85 100644
--- a/jetty-io/pom.xml
+++ b/jetty-io/pom.xml
@@ -2,7 +2,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-io
diff --git a/jetty-jaas/pom.xml b/jetty-jaas/pom.xml
index ccad75a8372..b4ddae911a5 100644
--- a/jetty-jaas/pom.xml
+++ b/jetty-jaas/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-jaas
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index 83c6754f104..419a649b47d 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-jaspi
diff --git a/jetty-jmx/pom.xml b/jetty-jmx/pom.xml
index 4598f5e0b68..77189a19183 100644
--- a/jetty-jmx/pom.xml
+++ b/jetty-jmx/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-jmx
diff --git a/jetty-jndi/pom.xml b/jetty-jndi/pom.xml
index e4857100e34..df203c9c4ca 100644
--- a/jetty-jndi/pom.xml
+++ b/jetty-jndi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-jndi
diff --git a/jetty-jspc-maven-plugin/pom.xml b/jetty-jspc-maven-plugin/pom.xml
index 1390f8838e3..8c18ac3b7c4 100644
--- a/jetty-jspc-maven-plugin/pom.xml
+++ b/jetty-jspc-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-jspc-maven-plugin
diff --git a/jetty-maven-plugin/pom.xml b/jetty-maven-plugin/pom.xml
index 96c35c8b87d..263cb581f0f 100644
--- a/jetty-maven-plugin/pom.xml
+++ b/jetty-maven-plugin/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-maven-plugin
diff --git a/jetty-monitor/pom.xml b/jetty-monitor/pom.xml
index 53bc4407128..8f311722922 100644
--- a/jetty-monitor/pom.xml
+++ b/jetty-monitor/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-monitor
diff --git a/jetty-nosql/pom.xml b/jetty-nosql/pom.xml
index 6ebc0c2f131..94e34c816ab 100644
--- a/jetty-nosql/pom.xml
+++ b/jetty-nosql/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-nosql
diff --git a/jetty-osgi/jetty-osgi-alpn/pom.xml b/jetty-osgi/jetty-osgi-alpn/pom.xml
index 01c80dce267..1423eed4eff 100644
--- a/jetty-osgi/jetty-osgi-alpn/pom.xml
+++ b/jetty-osgi/jetty-osgi-alpn/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-osgi-alpn
diff --git a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
index e9a44762dbd..213fedc9cb3 100644
--- a/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-osgi-boot-jsp
diff --git a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
index 4c19b9ef479..5966f59ab1d 100644
--- a/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-osgi/jetty-osgi-boot/pom.xml b/jetty-osgi/jetty-osgi-boot/pom.xml
index b0ed9841110..d9896cbfbbe 100644
--- a/jetty-osgi/jetty-osgi-boot/pom.xml
+++ b/jetty-osgi/jetty-osgi-boot/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-osgi-boot
diff --git a/jetty-osgi/jetty-osgi-httpservice/pom.xml b/jetty-osgi/jetty-osgi-httpservice/pom.xml
index a7e8ed156fb..2336bc29671 100644
--- a/jetty-osgi/jetty-osgi-httpservice/pom.xml
+++ b/jetty-osgi/jetty-osgi-httpservice/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-httpservice
diff --git a/jetty-osgi/pom.xml b/jetty-osgi/pom.xml
index 652cf4eced4..1583dab6ccc 100644
--- a/jetty-osgi/pom.xml
+++ b/jetty-osgi/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi-context/pom.xml b/jetty-osgi/test-jetty-osgi-context/pom.xml
index ccd061ee907..aff28c95d30 100644
--- a/jetty-osgi/test-jetty-osgi-context/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-context/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
test-jetty-osgi-context
diff --git a/jetty-osgi/test-jetty-osgi-fragment/pom.xml b/jetty-osgi/test-jetty-osgi-fragment/pom.xml
index 591558496d2..aaff8876c1e 100644
--- a/jetty-osgi/test-jetty-osgi-fragment/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-fragment/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi-webapp/pom.xml b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
index 669594dd73e..572f8d343bf 100644
--- a/jetty-osgi/test-jetty-osgi-webapp/pom.xml
+++ b/jetty-osgi/test-jetty-osgi-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-osgi/test-jetty-osgi/pom.xml b/jetty-osgi/test-jetty-osgi/pom.xml
index 61bcae62628..372e8a53494 100644
--- a/jetty-osgi/test-jetty-osgi/pom.xml
+++ b/jetty-osgi/test-jetty-osgi/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.osgi
jetty-osgi-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/jetty-plus/pom.xml b/jetty-plus/pom.xml
index 5501d415e9f..91d64509c29 100644
--- a/jetty-plus/pom.xml
+++ b/jetty-plus/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-plus
diff --git a/jetty-proxy/pom.xml b/jetty-proxy/pom.xml
index ec87ed62b9e..7aadea5cba0 100644
--- a/jetty-proxy/pom.xml
+++ b/jetty-proxy/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-proxy
diff --git a/jetty-quickstart/pom.xml b/jetty-quickstart/pom.xml
index e51de508268..fc7b27aaf5f 100644
--- a/jetty-quickstart/pom.xml
+++ b/jetty-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
org.eclipse.jetty
diff --git a/jetty-rewrite/pom.xml b/jetty-rewrite/pom.xml
index 97da9cc4347..aa5fb3b3d0d 100644
--- a/jetty-rewrite/pom.xml
+++ b/jetty-rewrite/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-rewrite
diff --git a/jetty-runner/pom.xml b/jetty-runner/pom.xml
index 1d85d8b4ac3..223323b7051 100644
--- a/jetty-runner/pom.xml
+++ b/jetty-runner/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-runner
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index d594293acfc..a908b6ca635 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-security
diff --git a/jetty-server/pom.xml b/jetty-server/pom.xml
index 00cffd6cfdb..2f21057cee0 100644
--- a/jetty-server/pom.xml
+++ b/jetty-server/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-server
diff --git a/jetty-servlet/pom.xml b/jetty-servlet/pom.xml
index 8d8bbc0ca88..fc3372d1555 100644
--- a/jetty-servlet/pom.xml
+++ b/jetty-servlet/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-servlet
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index 1515ee26616..e3448252533 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-servlets
diff --git a/jetty-spring/pom.xml b/jetty-spring/pom.xml
index 4c1d3fa5240..5513f23e649 100644
--- a/jetty-spring/pom.xml
+++ b/jetty-spring/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-spring
diff --git a/jetty-start/pom.xml b/jetty-start/pom.xml
index 6f14b5fa92c..fcfab1c0841 100644
--- a/jetty-start/pom.xml
+++ b/jetty-start/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-start
diff --git a/jetty-util-ajax/pom.xml b/jetty-util-ajax/pom.xml
index 41fd1b2fc6a..eeaf05cbf1e 100644
--- a/jetty-util-ajax/pom.xml
+++ b/jetty-util-ajax/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-util-ajax
diff --git a/jetty-util/pom.xml b/jetty-util/pom.xml
index 4bc3a2e3c88..17db349cb6c 100644
--- a/jetty-util/pom.xml
+++ b/jetty-util/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-util
diff --git a/jetty-webapp/pom.xml b/jetty-webapp/pom.xml
index c358eb461a7..7c8eb1ce33e 100644
--- a/jetty-webapp/pom.xml
+++ b/jetty-webapp/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-webapp
diff --git a/jetty-websocket/javax-websocket-client-impl/pom.xml b/jetty-websocket/javax-websocket-client-impl/pom.xml
index 245cf4289c6..d28307f3b3d 100644
--- a/jetty-websocket/javax-websocket-client-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-client-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/javax-websocket-server-impl/pom.xml b/jetty-websocket/javax-websocket-server-impl/pom.xml
index 620c664486d..289bc1978bd 100644
--- a/jetty-websocket/javax-websocket-server-impl/pom.xml
+++ b/jetty-websocket/javax-websocket-server-impl/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/pom.xml b/jetty-websocket/pom.xml
index 14ce2695bbb..e4729b2281e 100644
--- a/jetty-websocket/pom.xml
+++ b/jetty-websocket/pom.xml
@@ -3,7 +3,7 @@
jetty-project
org.eclipse.jetty
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-api/pom.xml b/jetty-websocket/websocket-api/pom.xml
index 59167474934..211e0afe2b6 100644
--- a/jetty-websocket/websocket-api/pom.xml
+++ b/jetty-websocket/websocket-api/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-client/pom.xml b/jetty-websocket/websocket-client/pom.xml
index 1a825126ffc..fd93a00a19c 100644
--- a/jetty-websocket/websocket-client/pom.xml
+++ b/jetty-websocket/websocket-client/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-common/pom.xml b/jetty-websocket/websocket-common/pom.xml
index f94a9945940..a123bfa673c 100644
--- a/jetty-websocket/websocket-common/pom.xml
+++ b/jetty-websocket/websocket-common/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-server/pom.xml b/jetty-websocket/websocket-server/pom.xml
index fb37f2fdeee..1421e4add5a 100644
--- a/jetty-websocket/websocket-server/pom.xml
+++ b/jetty-websocket/websocket-server/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-websocket/websocket-servlet/pom.xml b/jetty-websocket/websocket-servlet/pom.xml
index b3aa45003b9..f3355aeaada 100644
--- a/jetty-websocket/websocket-servlet/pom.xml
+++ b/jetty-websocket/websocket-servlet/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.websocket
websocket-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/jetty-xml/pom.xml b/jetty-xml/pom.xml
index 6d4ceb18163..1c168b00837 100644
--- a/jetty-xml/pom.xml
+++ b/jetty-xml/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jetty-xml
diff --git a/pom.xml b/pom.xml
index 32e0ab1ea0e..f369c298594 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
4.0.0
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
Jetty :: Project
http://www.eclipse.org/jetty
pom
diff --git a/tests/pom.xml b/tests/pom.xml
index 41cf0757060..ce483b77eee 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty
jetty-project
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
org.eclipse.jetty.tests
diff --git a/tests/test-continuation/pom.xml b/tests/test-continuation/pom.xml
index bccaf487046..2c29f2077bf 100644
--- a/tests/test-continuation/pom.xml
+++ b/tests/test-continuation/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-http-client-transport/pom.xml b/tests/test-http-client-transport/pom.xml
index a5e898a954b..b23a133d79a 100644
--- a/tests/test-http-client-transport/pom.xml
+++ b/tests/test-http-client-transport/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
diff --git a/tests/test-integration/pom.xml b/tests/test-integration/pom.xml
index 13c2f0d3208..5b677fbe93e 100644
--- a/tests/test-integration/pom.xml
+++ b/tests/test-integration/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
test-integration
diff --git a/tests/test-jmx/jmx-webapp-it/pom.xml b/tests/test-jmx/jmx-webapp-it/pom.xml
index be01a2afed4..58cc8ab0fd1 100644
--- a/tests/test-jmx/jmx-webapp-it/pom.xml
+++ b/tests/test-jmx/jmx-webapp-it/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
jmx-webapp-it
diff --git a/tests/test-jmx/jmx-webapp/pom.xml b/tests/test-jmx/jmx-webapp/pom.xml
index 2f4d4993157..b964135c3fd 100644
--- a/tests/test-jmx/jmx-webapp/pom.xml
+++ b/tests/test-jmx/jmx-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-jmx-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
jmx-webapp
war
diff --git a/tests/test-jmx/pom.xml b/tests/test-jmx/pom.xml
index dcf2cb4ce20..16142b372ce 100644
--- a/tests/test-jmx/pom.xml
+++ b/tests/test-jmx/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
4.0.0
test-jmx-parent
diff --git a/tests/test-loginservice/pom.xml b/tests/test-loginservice/pom.xml
index 1d717f5c83b..cf44c2af4f6 100644
--- a/tests/test-loginservice/pom.xml
+++ b/tests/test-loginservice/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-loginservice
Jetty Tests :: Login Service
diff --git a/tests/test-quickstart/pom.xml b/tests/test-quickstart/pom.xml
index 52eb9e250a5..93ddcede29e 100644
--- a/tests/test-quickstart/pom.xml
+++ b/tests/test-quickstart/pom.xml
@@ -2,7 +2,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-sessions/pom.xml b/tests/test-sessions/pom.xml
index dc81ecfb463..f85b1021783 100644
--- a/tests/test-sessions/pom.xml
+++ b/tests/test-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-sessions-parent
Jetty Tests :: Sessions :: Parent
diff --git a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
index 4833aeb495a..5f42667e4c4 100644
--- a/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
+++ b/tests/test-sessions/test-gcloud-memcached-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-gcloud-memcached-sessions
Jetty Tests :: Sessions :: GCloud with Memcached
diff --git a/tests/test-sessions/test-gcloud-sessions/pom.xml b/tests/test-sessions/test-gcloud-sessions/pom.xml
index 40f49001aaf..e9bb9248f51 100644
--- a/tests/test-sessions/test-gcloud-sessions/pom.xml
+++ b/tests/test-sessions/test-gcloud-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-gcloud-sessions
Jetty Tests :: Sessions :: GCloud
diff --git a/tests/test-sessions/test-hash-sessions/pom.xml b/tests/test-sessions/test-hash-sessions/pom.xml
index 7c8108dc278..45313a829f2 100644
--- a/tests/test-sessions/test-hash-sessions/pom.xml
+++ b/tests/test-sessions/test-hash-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-hash-sessions
Jetty Tests :: Sessions :: Hash
diff --git a/tests/test-sessions/test-infinispan-sessions/pom.xml b/tests/test-sessions/test-infinispan-sessions/pom.xml
index 811960741ba..4961cbbe56d 100644
--- a/tests/test-sessions/test-infinispan-sessions/pom.xml
+++ b/tests/test-sessions/test-infinispan-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-infinispan-sessions
Jetty Tests :: Sessions :: Infinispan
diff --git a/tests/test-sessions/test-jdbc-sessions/pom.xml b/tests/test-sessions/test-jdbc-sessions/pom.xml
index 772d35c9ccb..2f37c8f8ea9 100644
--- a/tests/test-sessions/test-jdbc-sessions/pom.xml
+++ b/tests/test-sessions/test-jdbc-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-jdbc-sessions
Jetty Tests :: Sessions :: JDBC
diff --git a/tests/test-sessions/test-mongodb-sessions/pom.xml b/tests/test-sessions/test-mongodb-sessions/pom.xml
index fed1e9446cb..09c62b4ae61 100644
--- a/tests/test-sessions/test-mongodb-sessions/pom.xml
+++ b/tests/test-sessions/test-mongodb-sessions/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-mongodb-sessions
Jetty Tests :: Sessions :: Mongo
diff --git a/tests/test-sessions/test-sessions-common/pom.xml b/tests/test-sessions/test-sessions-common/pom.xml
index f3b3cdb45b5..32df845d3cd 100644
--- a/tests/test-sessions/test-sessions-common/pom.xml
+++ b/tests/test-sessions/test-sessions-common/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-sessions-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-sessions-common
Jetty Tests :: Sessions :: Common
diff --git a/tests/test-webapps/pom.xml b/tests/test-webapps/pom.xml
index 8d7c35d0615..83d56e675a2 100644
--- a/tests/test-webapps/pom.xml
+++ b/tests/test-webapps/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
tests-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
test-webapps-parent
diff --git a/tests/test-webapps/test-jaas-webapp/pom.xml b/tests/test-webapps/test-jaas-webapp/pom.xml
index bd7cbb72044..2421904b769 100644
--- a/tests/test-webapps/test-jaas-webapp/pom.xml
+++ b/tests/test-webapps/test-jaas-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-jaas-webapp
Jetty Tests :: WebApp :: JAAS
diff --git a/tests/test-webapps/test-jetty-webapp/pom.xml b/tests/test-webapps/test-jetty-webapp/pom.xml
index c543277b56d..cac99c205ef 100644
--- a/tests/test-webapps/test-jetty-webapp/pom.xml
+++ b/tests/test-webapps/test-jetty-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-jndi-webapp/pom.xml b/tests/test-webapps/test-jndi-webapp/pom.xml
index 95e318624ed..858376e3c7b 100644
--- a/tests/test-webapps/test-jndi-webapp/pom.xml
+++ b/tests/test-webapps/test-jndi-webapp/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-jndi-webapp
Jetty Tests :: WebApp :: JNDI
diff --git a/tests/test-webapps/test-mock-resources/pom.xml b/tests/test-webapps/test-mock-resources/pom.xml
index c948c507f1e..1a44e990e98 100644
--- a/tests/test-webapps/test-mock-resources/pom.xml
+++ b/tests/test-webapps/test-mock-resources/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
Jetty Tests :: WebApp :: Mock Resources
test-mock-resources
diff --git a/tests/test-webapps/test-proxy-webapp/pom.xml b/tests/test-webapps/test-proxy-webapp/pom.xml
index b9358f9a08d..8a07adb2723 100644
--- a/tests/test-webapps/test-proxy-webapp/pom.xml
+++ b/tests/test-webapps/test-proxy-webapp/pom.xml
@@ -3,7 +3,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
../pom.xml
4.0.0
diff --git a/tests/test-webapps/test-servlet-spec/pom.xml b/tests/test-webapps/test-servlet-spec/pom.xml
index ea05e1ba61e..64e9443fe32 100644
--- a/tests/test-webapps/test-servlet-spec/pom.xml
+++ b/tests/test-webapps/test-servlet-spec/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-servlet-spec-parent
Jetty Tests :: Spec Test WebApp :: Parent
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 8a4faf7d56a..16fbe72124b 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-container-initializer
jar
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 d17b85e6ea6..204106f89c8 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
Jetty Tests :: Webapps :: Spec Webapp
test-spec-webapp
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 f4331690dae..00ea4629c8e 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 @@
org.eclipse.jetty.tests
test-servlet-spec-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar
diff --git a/tests/test-webapps/test-webapp-rfc2616/pom.xml b/tests/test-webapps/test-webapp-rfc2616/pom.xml
index d8d627c3337..d9dbca2d3dc 100644
--- a/tests/test-webapps/test-webapp-rfc2616/pom.xml
+++ b/tests/test-webapps/test-webapp-rfc2616/pom.xml
@@ -4,7 +4,7 @@
org.eclipse.jetty.tests
test-webapps-parent
- 9.3.28.v20191105
+ 9.3.29-SNAPSHOT
test-webapp-rfc2616
Jetty Tests :: WebApp :: RFC2616
From 6fabbccf8b5729c5d632b4a31ed40849bdf73882 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 16:23:49 -0600
Subject: [PATCH 20/34] Updating http to https
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 2d529b0275a..969435deb35 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ Documentation
Project documentation is available on the Jetty Eclipse website.
-- [http://www.eclipse.org/jetty/documentation](http://www.eclipse.org/jetty/documentation)
+- [https://www.eclipse.org/jetty/documentation](https://www.eclipse.org/jetty/documentation)
Building
========
@@ -45,4 +45,4 @@ It is possible to bypass tests by building with `mvn clean install -DskipTests`.
Professional Services
---------------------
-Expert advice and production support are available through [Webtide.com](http://webtide.com).
+Expert advice and production support are available through [Webtide.com](https://webtide.com).
From b455b8abcceae586054b09a45f840a10f1e6f3b0 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Tue, 5 Nov 2019 14:29:45 -0600
Subject: [PATCH 21/34] Eliminating 9.3.0.RC0 dependency
Signed-off-by: Joakim Erdfelt
---
.../test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 6 ------
1 file changed, 6 deletions(-)
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 d748f0a5c13..97014620b37 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
@@ -219,11 +219,5 @@
test-container-initializer
${project.version}
-
- org.eclipse.jetty
- jetty-util
-
- 9.3.0.RC0
-
From 2d9f1284103fa7d769ad9bc18d7107acc59072ab Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 6 Nov 2019 16:02:00 -0600
Subject: [PATCH 22/34] Issue #4173 - simplify base name lookup
+ Some cleanup of logging
+ Exception during getResourceBaseName() results in empty canonical segment
Signed-off-by: Joakim Erdfelt
---
.../jetty/webapp/WebInfConfiguration.java | 73 +++++++++----------
.../jetty/webapp/WebInfConfigurationTest.java | 54 +++++++++-----
2 files changed, 69 insertions(+), 58 deletions(-)
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
index b8efd3fdfd9..08fcccbe4dc 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
@@ -785,8 +785,11 @@ public class WebInfConfiguration extends AbstractConfiguration
}
catch (Exception e)
{
- LOG.warn("Can't get resource for resourceBase", e);
- LOG.debug(e);
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Can't get resource base name", e);
+ }
+ canonicalName.append("-"); // empty resourceBaseName segment
}
//Context name
@@ -818,60 +821,50 @@ public class WebInfConfiguration extends AbstractConfiguration
}
catch (IOException e)
{
- LOG.ignore(e);
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Resource has no File reference: {}", resource);
+ }
}
// Use URI itself.
URI uri = resource.getURI();
if (uri == null)
{
- throw new RuntimeException("Unable to produce URI from resource: " + resource);
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("Resource has no URI reference: {}", resource);
+ }
+ return "";
}
+
return getUriLastPathSegment(uri);
}
protected static String getUriLastPathSegment(URI uri)
{
- String path = uri.getPath();
-
- if ("jar".equalsIgnoreCase(uri.getScheme()))
+ String ssp = uri.getSchemeSpecificPart();
+ // strip off deep jar:file: reference information
+ int idx = ssp.indexOf("!/");
+ if (idx != -1)
{
- String schemeSpecificPart = uri.getRawSchemeSpecificPart();
- URI inner = URI.create(schemeSpecificPart);
- if ("file".equalsIgnoreCase(inner.getScheme()))
- {
- path = inner.getRawPath();
- int idx = path.lastIndexOf("!/");
- if (idx >= 0)
- {
- String pathInJar = path.substring(idx + 2);
- if (StringUtil.isNotBlank(pathInJar))
- {
- URI pathInJarUri = URI.create(pathInJar);
- return getUriLastPathSegment(pathInJarUri);
- }
- else
- {
- // Strip empty "!/"
- path = path.substring(0, idx);
- }
- }
- // if we reached here, we have "jar:file:" but no
- // internal jar reference with "!/" present
- }
- else
- {
- // inner URI is not "file"
- return getUriLastPathSegment(inner);
- }
+ ssp = ssp.substring(0, idx);
}
- if (path.endsWith("/"))
- path = path.substring(0, path.length() - 1);
- // get just the last part which is the filename
- int i = path.lastIndexOf("/");
+ // Strip off trailing '/' if present
+ if (ssp.endsWith("/"))
+ {
+ ssp = ssp.substring(0, ssp.length() - 1);
+ }
- return path.substring(i + 1);
+ // Only interested in last segment
+ idx = ssp.lastIndexOf('/');
+ if (idx != -1)
+ {
+ ssp = ssp.substring(idx + 1);
+ }
+
+ return ssp;
}
protected List findClassDirs(WebAppContext context)
diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
index 130de381851..28c1f5a0aa7 100644
--- a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java
@@ -158,7 +158,7 @@ public class WebInfConfigurationTest
assertThat(WebInfConfiguration.getResourceBaseName(resource), is(expectedName));
}
- public static Stream baseResourceNames()
+ public static Stream fileBaseResourceNames()
{
return Stream.of(
Arguments.of("test.war", "test.war"),
@@ -178,7 +178,7 @@ public class WebInfConfigurationTest
}
@ParameterizedTest
- @MethodSource("baseResourceNames")
+ @MethodSource("fileBaseResourceNames")
public void testPathGetResourceBaseName(String basePath, String expectedName) throws IOException
{
Path root = workDir.getPath();
@@ -198,15 +198,43 @@ public class WebInfConfigurationTest
assertThat(WebInfConfiguration.getResourceBaseName(resource), is(expectedName));
}
+ public static Stream fileUriBaseResourceNames()
+ {
+ return Stream.of(
+ Arguments.of("test.war", "test.war"),
+ Arguments.of("a/b/c/test.war", "test.war"),
+ Arguments.of("bar%2Fbaz/test.war", "test.war"),
+ Arguments.of("fizz buzz/test.war", "test.war"),
+ Arguments.of("another one/bites the dust/", "bites the dust"),
+ Arguments.of("another+one/bites+the+dust/", "bites+the+dust"),
+ Arguments.of("another%20one/bites%20the%20dust/", "bites%20the%20dust"),
+ Arguments.of("spanish/n\u00FAmero.war", "n\u00FAmero.war"),
+ Arguments.of("spanish/n%C3%BAmero.war", "n%C3%BAmero.war"),
+ Arguments.of("a/b!/", "b"),
+ Arguments.of("a/b!/c/", "b"),
+ Arguments.of("a/b!/c/d/", "b"),
+ Arguments.of("a/b%21/", "b%21")
+ );
+ }
+
/**
* Similar to testPathGetResourceBaseName, but with "file:" URIs
*/
@ParameterizedTest
- @MethodSource("baseResourceNames")
+ @MethodSource("fileUriBaseResourceNames")
public void testFileUriGetUriLastPathSegment(String basePath, String expectedName) throws IOException
{
Path root = workDir.getPath();
Path base = root.resolve(basePath);
+ if (basePath.endsWith("/"))
+ {
+ FS.ensureDirExists(base);
+ }
+ else
+ {
+ FS.ensureDirExists(base.getParent());
+ FS.touch(base);
+ }
URI uri = base.toUri();
if (OS.MAC.isCurrentOs())
{
@@ -216,7 +244,7 @@ public class WebInfConfigurationTest
assertThat(WebInfConfiguration.getUriLastPathSegment(uri), is(expectedName));
}
- public static Stream jarFileBaseResourceNames() throws URISyntaxException, IOException
+ public static Stream uriLastSegmentSource() throws URISyntaxException, IOException
{
Path testJar = MavenTestingUtils.getTestResourcePathFile(TEST_RESOURCE_JAR);
URI uri = new URI("jar", testJar.toUri().toASCIIString(), null);
@@ -243,17 +271,7 @@ public class WebInfConfigurationTest
}
else
{
- String lastPathSegment = TEST_RESOURCE_JAR;
- if (path.getFileName() != null)
- {
- lastPathSegment = path.getFileName().toString();
- }
- // Strip last '/' from directory entries
- if (Files.isDirectory(path) && lastPathSegment.endsWith("/"))
- {
- lastPathSegment = lastPathSegment.substring(0, lastPathSegment.length() - 1);
- }
- arguments.add(Arguments.of(path.toUri(), lastPathSegment));
+ arguments.add(Arguments.of(path.toUri(), TEST_RESOURCE_JAR));
}
});
}
@@ -263,11 +281,11 @@ public class WebInfConfigurationTest
}
/**
- * Tests of "jar:file:" based URIs
+ * Tests of URIs last segment, including "jar:file:" based URIs.
*/
@ParameterizedTest
- @MethodSource("jarFileBaseResourceNames")
- public void testJarFileUriGetUriLastPathSegment(URI uri, String expectedName) throws IOException
+ @MethodSource("uriLastSegmentSource")
+ public void testGetUriLastPathSegment(URI uri, String expectedName) throws IOException
{
assertThat(WebInfConfiguration.getUriLastPathSegment(uri), is(expectedName));
}
From 13a574557b994f1777ebe2fb83d8fa56d178865b Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Wed, 6 Nov 2019 16:09:54 -0600
Subject: [PATCH 23/34] JarFileResource.getFile() now returns the Jar's
java.io.File object
Signed-off-by: Joakim Erdfelt
---
.../org/eclipse/jetty/util/resource/JarFileResource.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
index cf6252f6bc1..eea92e9f19d 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
@@ -404,4 +404,12 @@ public class JarFileResource extends JarResource
URL url = new URL(string);
return url.sameFile(resource.getURI().toURL());
}
+
+ @Override
+ public File getFile()
+ {
+ if (_file != null)
+ return _file;
+ return null;
+ }
}
From 070d2b235efcf07ab9f48e99df9d0ffaa0290dc6 Mon Sep 17 00:00:00 2001
From: Greg Wilkins
Date: Thu, 7 Nov 2019 09:31:52 +1100
Subject: [PATCH 24/34] Issue #4264 Revert doError signature
revert the doError signature.
Signed-off-by: Greg Wilkins
---
.../jetty/server/handler/ErrorHandler.java | 28 +++++++++++--------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java
index 4e7a245535b..4cc5389b1b2 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java
@@ -27,11 +27,9 @@ import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -95,7 +93,7 @@ public class ErrorHandler extends AbstractHandler
}
@Override
- public void doError(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+ public void doError(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException
{
String cacheControl = getCacheControl();
if (cacheControl != null)
@@ -113,15 +111,23 @@ public class ErrorHandler extends AbstractHandler
{
if (errorDispatcher != null)
{
- errorDispatcher.error(request, response);
- }
- else
- {
- String message = (String)request.getAttribute(Dispatcher.ERROR_MESSAGE);
- if (message == null)
- message = baseRequest.getResponse().getReason();
- generateAcceptableResponse(baseRequest, request, response, response.getStatus(), message);
+ try
+ {
+ errorDispatcher.error(request, response);
+ return;
+ }
+ catch (ServletException e)
+ {
+ LOG.debug(e);
+ if (response.isCommitted())
+ return;
+ }
}
+
+ String message = (String)request.getAttribute(Dispatcher.ERROR_MESSAGE);
+ if (message == null)
+ message = baseRequest.getResponse().getReason();
+ generateAcceptableResponse(baseRequest, request, response, response.getStatus(), message);
}
finally
{
From 18e7ee594003e27bd4f453389a4d0a2b2e902050 Mon Sep 17 00:00:00 2001
From: Lachlan
Date: Thu, 7 Nov 2019 10:53:25 +1100
Subject: [PATCH 25/34] Issue #4237 - allow openid module to be configured
without context xml (#4244)
Signed-off-by: Lachlan Roberts
---
jetty-jaspi/pom.xml | 18 +++++
...lipse.jetty.security.Authenticator$Factory | 1 +
jetty-openid/pom.xml | 18 +++++
.../openid/OpenIdAuthenticatorFactory.java | 5 +-
...lipse.jetty.security.Authenticator$Factory | 1 +
jetty-security/pom.xml | 17 +++++
.../jetty/security/SecurityHandler.java | 72 ++++++++++++++++---
7 files changed, 120 insertions(+), 12 deletions(-)
create mode 100644 jetty-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
create mode 100644 jetty-openid/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
diff --git a/jetty-jaspi/pom.xml b/jetty-jaspi/pom.xml
index d446a891fdb..9cb18cfc744 100644
--- a/jetty-jaspi/pom.xml
+++ b/jetty-jaspi/pom.xml
@@ -23,6 +23,24 @@
org.eclipse.jetty.jaspi.*
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+
+ manifest
+
+
+
+ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)"
+ osgi.serviceloader;osgi.serviceloader=org.eclipse.jetty.security.Authenticator$Factory
+
+
+
+
+
diff --git a/jetty-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory b/jetty-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
new file mode 100644
index 00000000000..2e24fa8ca2a
--- /dev/null
+++ b/jetty-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
@@ -0,0 +1 @@
+org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory
\ No newline at end of file
diff --git a/jetty-openid/pom.xml b/jetty-openid/pom.xml
index 1100f4dc10f..6c2943a636b 100644
--- a/jetty-openid/pom.xml
+++ b/jetty-openid/pom.xml
@@ -24,6 +24,24 @@
org.eclipse.jetty.security.openid.*
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+
+ manifest
+
+
+
+ osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)"
+ osgi.serviceloader;osgi.serviceloader=org.eclipse.jetty.security.Authenticator$Factory
+
+
+
+
+
diff --git a/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticatorFactory.java b/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticatorFactory.java
index 86eea6cdbde..20af7a7ed0e 100644
--- a/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticatorFactory.java
+++ b/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticatorFactory.java
@@ -21,13 +21,12 @@ package org.eclipse.jetty.security.openid;
import javax.servlet.ServletContext;
import org.eclipse.jetty.security.Authenticator;
-import org.eclipse.jetty.security.DefaultAuthenticatorFactory;
import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.LoginService;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.security.Constraint;
-public class OpenIdAuthenticatorFactory extends DefaultAuthenticatorFactory
+public class OpenIdAuthenticatorFactory implements Authenticator.Factory
{
@Override
public Authenticator getAuthenticator(Server server, ServletContext context, Authenticator.AuthConfiguration configuration, IdentityService identityService, LoginService loginService)
@@ -35,6 +34,6 @@ public class OpenIdAuthenticatorFactory extends DefaultAuthenticatorFactory
String auth = configuration.getAuthMethod();
if (Constraint.__OPENID_AUTH.equalsIgnoreCase(auth))
return new OpenIdAuthenticator();
- return super.getAuthenticator(server, context, configuration, identityService, loginService);
+ return null;
}
}
\ No newline at end of file
diff --git a/jetty-openid/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory b/jetty-openid/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
new file mode 100644
index 00000000000..cc53212a57b
--- /dev/null
+++ b/jetty-openid/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory
@@ -0,0 +1 @@
+org.eclipse.jetty.security.openid.OpenIdAuthenticatorFactory
\ No newline at end of file
diff --git a/jetty-security/pom.xml b/jetty-security/pom.xml
index 13008a7b235..b2fd3b06d53 100644
--- a/jetty-security/pom.xml
+++ b/jetty-security/pom.xml
@@ -21,6 +21,23 @@
org.eclipse.jetty.security.*
+
+ org.apache.felix
+ maven-bundle-plugin
+ true
+
+
+
+ manifest
+
+
+
+ osgi.serviceloader; filter:="(osgi.serviceloader=org.eclipse.jetty.security.Authenticator$Factory)";resolution:=optional;cardinality:=multiple, osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)";resolution:=optional
+
+
+
+
+
diff --git a/jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java b/jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java
index 62df3199fd7..d5b74b488f2 100644
--- a/jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java
+++ b/jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java
@@ -20,10 +20,13 @@ package org.eclipse.jetty.security;
import java.io.IOException;
import java.security.Principal;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.ServiceLoader;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -38,6 +41,7 @@ import org.eclipse.jetty.server.UserIdentity;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandler.Context;
import org.eclipse.jetty.server.handler.HandlerWrapper;
+import org.eclipse.jetty.util.component.DumpableCollection;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -58,20 +62,31 @@ import org.eclipse.jetty.util.log.Logger;
public abstract class SecurityHandler extends HandlerWrapper implements Authenticator.AuthConfiguration
{
private static final Logger LOG = Log.getLogger(SecurityHandler.class);
+ private static final List __knownAuthenticatorFactories = new ArrayList<>();
private boolean _checkWelcomeFiles = false;
private Authenticator _authenticator;
- private Authenticator.Factory _authenticatorFactory = new DefaultAuthenticatorFactory();
+ private Authenticator.Factory _authenticatorFactory;
private String _realmName;
private String _authMethod;
- private final Map _initParameters = new HashMap();
+ private final Map _initParameters = new HashMap<>();
private LoginService _loginService;
private IdentityService _identityService;
private boolean _renewSession = true;
+ static
+ {
+ for (Authenticator.Factory factory : ServiceLoader.load(Authenticator.Factory.class))
+ {
+ __knownAuthenticatorFactories.add(factory);
+ }
+
+ __knownAuthenticatorFactories.add(new DefaultAuthenticatorFactory());
+ }
+
protected SecurityHandler()
{
- addBean(_authenticatorFactory);
+ addBean(new DumpableCollection("knownAuthenticatorFactories", __knownAuthenticatorFactories));
}
/**
@@ -163,6 +178,14 @@ public abstract class SecurityHandler extends HandlerWrapper implements Authenti
_authenticatorFactory = authenticatorFactory;
}
+ /**
+ * @return the list of discovered authenticatorFactories
+ */
+ public List getKnownAuthenticatorFactories()
+ {
+ return __knownAuthenticatorFactories;
+ }
+
/**
* @return the realmName
*/
@@ -241,12 +264,12 @@ public abstract class SecurityHandler extends HandlerWrapper implements Authenti
* @param key the init key
* @param value the init value
* @return previous value
- * @throws IllegalStateException if the SecurityHandler is running
+ * @throws IllegalStateException if the SecurityHandler is started
*/
public String setInitParameter(String key, String value)
{
- if (isRunning())
- throw new IllegalStateException("running");
+ if (isStarted())
+ throw new IllegalStateException("started");
return _initParameters.put(key, value);
}
@@ -336,9 +359,40 @@ public abstract class SecurityHandler extends HandlerWrapper implements Authenti
throw new IllegalStateException("LoginService has different IdentityService to " + this);
}
- Authenticator.Factory authenticatorFactory = getAuthenticatorFactory();
- if (_authenticator == null && authenticatorFactory != null && _identityService != null)
- setAuthenticator(authenticatorFactory.getAuthenticator(getServer(), ContextHandler.getCurrentContext(), this, _identityService, _loginService));
+ if (_authenticator == null && _identityService != null)
+ {
+ // If someone has set an authenticator factory only use that, otherwise try the list of discovered factories.
+ if (_authenticatorFactory != null)
+ {
+ Authenticator authenticator = _authenticatorFactory.getAuthenticator(getServer(), ContextHandler.getCurrentContext(),
+ this, _identityService, _loginService);
+
+ if (authenticator != null)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("Created authenticator {} with {}", authenticator, _authenticatorFactory);
+
+ setAuthenticator(authenticator);
+ }
+ }
+ else
+ {
+ for (Authenticator.Factory factory : getKnownAuthenticatorFactories())
+ {
+ Authenticator authenticator = factory.getAuthenticator(getServer(), ContextHandler.getCurrentContext(),
+ this, _identityService, _loginService);
+
+ if (authenticator != null)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("Created authenticator {} with {}", authenticator, factory);
+
+ setAuthenticator(authenticator);
+ break;
+ }
+ }
+ }
+ }
if (_authenticator != null)
_authenticator.setConfiguration(this);
From 2310196532ac9994ffd88a12519e9733bbd39a6f Mon Sep 17 00:00:00 2001
From: Lachlan
Date: Thu, 7 Nov 2019 11:02:25 +1100
Subject: [PATCH 26/34] Issue #1777 - configuration for jetty-10
WebSocketClient to be stopped at shutdown
Signed-off-by: Lachlan Roberts
---
.../websocket/client/WebSocketClient.java | 29 ++++++++++++++++++-
.../core/client/WebSocketCoreClient.java | 12 --------
2 files changed, 28 insertions(+), 13 deletions(-)
diff --git a/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java b/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
index 1a90957dddf..fd07a8c0eb3 100644
--- a/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
+++ b/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
@@ -41,6 +41,7 @@ import org.eclipse.jetty.util.component.ContainerLifeCycle;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.ShutdownThread;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.UpgradeRequest;
import org.eclipse.jetty.websocket.api.WebSocketBehavior;
@@ -65,7 +66,8 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
private final List sessionListeners = new CopyOnWriteArrayList<>();
private final SessionTracker sessionTracker = new SessionTracker();
private final FrameHandler.ConfigurationCustomizer configurationCustomizer = new FrameHandler.ConfigurationCustomizer();
- private WebSocketComponents components = new WebSocketComponents();
+ private final WebSocketComponents components = new WebSocketComponents();
+ private boolean stopAtShutdown = false;
/**
* Instantiate a WebSocketClient with defaults
@@ -340,6 +342,31 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
return getHttpClient().getSslContextFactory();
}
+ /**
+ * Set JVM shutdown behavior.
+ * @param stop If true, this client instance will be explicitly stopped when the
+ * JVM is shutdown. Otherwise the application is responsible for maintaining the WebSocketClient lifecycle.
+ * @see Runtime#addShutdownHook(Thread)
+ * @see ShutdownThread
+ */
+ public synchronized void setStopAtShutdown(boolean stop)
+ {
+ if (stop)
+ {
+ if (!stopAtShutdown && !ShutdownThread.isRegistered(this))
+ ShutdownThread.register(this);
+ }
+ else
+ ShutdownThread.deregister(this);
+
+ stopAtShutdown = stop;
+ }
+
+ public boolean isStopAtShutdown()
+ {
+ return stopAtShutdown;
+ }
+
@Override
public String toString()
{
diff --git a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/core/client/WebSocketCoreClient.java b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/core/client/WebSocketCoreClient.java
index 2d13e76fcc3..1c89cdcc871 100644
--- a/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/core/client/WebSocketCoreClient.java
+++ b/jetty-websocket/websocket-core/src/main/java/org/eclipse/jetty/websocket/core/client/WebSocketCoreClient.java
@@ -28,7 +28,6 @@ import org.eclipse.jetty.util.DecoratedObjectFactory;
import org.eclipse.jetty.util.component.ContainerLifeCycle;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
-import org.eclipse.jetty.util.thread.ShutdownThread;
import org.eclipse.jetty.websocket.core.ExtensionConfig;
import org.eclipse.jetty.websocket.core.FrameHandler;
import org.eclipse.jetty.websocket.core.WebSocketComponents;
@@ -92,20 +91,9 @@ public class WebSocketCoreClient extends ContainerLifeCycle
if (LOG.isDebugEnabled())
LOG.debug("connect to websocket {}", request.getURI());
- init();
-
return request.sendAsync();
}
- // TODO: review need for this.
- private synchronized void init() throws IOException
- {
- if (!ShutdownThread.isRegistered(this))
- {
- ShutdownThread.register(this);
- }
- }
-
public WebSocketExtensionRegistry getExtensionRegistry()
{
return components.getExtensionRegistry();
From d0f74c553211e936006b5b8d6f989c6ed2a62db2 Mon Sep 17 00:00:00 2001
From: Lachlan
Date: Thu, 7 Nov 2019 11:06:14 +1100
Subject: [PATCH 27/34] Issue #4124 - autobahn tests for jetty, javax websocket
APIs (#4147)
- do not select duplicate extensions in javax default Configurator
- correctly copy payload for ping frames in jetty & javax frame handlers
- add ByteBuffer to javadoc for onMessage in jetty api
- cleaned up some test logging for EventSocket
- add autoFragment and maxFrameSize settings to WebSocketPolicy
- fix early validation for multiple extensions in setExtensions
Signed-off-by: Lachlan Roberts
---
.../common/JavaxWebSocketFrameHandler.java | 8 +-
.../config/ContainerDefaultConfigurator.java | 13 +-
.../javax-websocket-tests/fuzzingclient.json | 18 ++
.../javax-websocket-tests/fuzzingserver.json | 10 +
.../websocket/javax/tests/EventSocket.java | 12 +-
.../tests/autobahn/JavaxAutobahnClient.java | 200 +++++++++++++++
.../tests/autobahn/JavaxAutobahnServer.java | 82 +++++++
.../tests/autobahn/JavaxAutobahnSocket.java | 76 ++++++
.../jetty/websocket/api/WebSocketPolicy.java | 31 +++
.../api/annotations/OnWebSocketMessage.java | 2 +
.../websocket/client/WebSocketClient.java | 24 ++
.../common/JettyWebSocketFrameHandler.java | 7 +-
.../websocket/common/WebSocketSession.java | 24 ++
.../common/OutgoingMessageCapture.java | 22 ++
.../server/JettyWebSocketServerContainer.java | 24 ++
.../server/JettyWebSocketServletFactory.java | 28 +--
.../jetty-websocket-tests/fuzzingclient.json | 18 ++
.../jetty-websocket-tests/fuzzingserver.json | 10 +
.../jetty/websocket/tests/EventSocket.java | 15 +-
.../tests/autobahn/JettyAutobahnClient.java | 227 ++++++++++++++++++
.../tests/autobahn/JettyAutobahnServer.java | 82 +++++++
.../tests/autobahn/JettyAutobahnSocket.java | 37 +++
jetty-websocket/websocket-core/pom.xml | 2 +-
.../core/WebSocketNegotiationTest.java | 19 ++
...ketClient.java => CoreAutobahnClient.java} | 12 +-
...ketServer.java => CoreAutobahnServer.java} | 2 +-
.../servlet/ServletUpgradeResponse.java | 2 +-
27 files changed, 953 insertions(+), 54 deletions(-)
create mode 100644 jetty-websocket/javax-websocket-tests/fuzzingclient.json
create mode 100644 jetty-websocket/javax-websocket-tests/fuzzingserver.json
create mode 100644 jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnClient.java
create mode 100644 jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnServer.java
create mode 100644 jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnSocket.java
create mode 100644 jetty-websocket/jetty-websocket-tests/fuzzingclient.json
create mode 100644 jetty-websocket/jetty-websocket-tests/fuzzingserver.json
create mode 100644 jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnClient.java
create mode 100644 jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnServer.java
create mode 100644 jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnSocket.java
rename jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/{AutobahnWebSocketClient.java => CoreAutobahnClient.java} (95%)
rename jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/{AutobahnWebSocketServer.java => CoreAutobahnServer.java} (98%)
diff --git a/jetty-websocket/javax-websocket-common/src/main/java/org/eclipse/jetty/websocket/javax/common/JavaxWebSocketFrameHandler.java b/jetty-websocket/javax-websocket-common/src/main/java/org/eclipse/jetty/websocket/javax/common/JavaxWebSocketFrameHandler.java
index 033cc270aa2..8356e064163 100644
--- a/jetty-websocket/javax-websocket-common/src/main/java/org/eclipse/jetty/websocket/javax/common/JavaxWebSocketFrameHandler.java
+++ b/jetty-websocket/javax-websocket-common/src/main/java/org/eclipse/jetty/websocket/javax/common/JavaxWebSocketFrameHandler.java
@@ -545,13 +545,7 @@ public class JavaxWebSocketFrameHandler implements FrameHandler
public void onPing(Frame frame, Callback callback)
{
- ByteBuffer payload = BufferUtil.EMPTY_BUFFER;
-
- if (frame.hasPayload())
- {
- payload = ByteBuffer.allocate(frame.getPayloadLength());
- BufferUtil.put(frame.getPayload(), payload);
- }
+ ByteBuffer payload = BufferUtil.copy(frame.getPayload());
coreSession.sendFrame(new Frame(OpCode.PONG).setPayload(payload), Callback.NOOP, false);
callback.succeeded();
}
diff --git a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java
index 9906438cc3f..4a5ac1bb7e6 100644
--- a/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java
+++ b/jetty-websocket/javax-websocket-server/src/main/java/org/eclipse/jetty/websocket/javax/server/config/ContainerDefaultConfigurator.java
@@ -18,6 +18,7 @@
package org.eclipse.jetty.websocket.javax.server.config;
+import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;
import javax.websocket.Extension;
@@ -28,6 +29,7 @@ import javax.websocket.server.ServerEndpointConfig.Configurator;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.websocket.core.ExtensionConfig;
/**
* The "Container Default Configurator" per the JSR-356 spec.
@@ -78,7 +80,16 @@ public final class ContainerDefaultConfigurator extends Configurator
@Override
public List getNegotiatedExtensions(List installed, List requested)
{
- return requested;
+ List negotiatedExtensions = new ArrayList<>();
+ for (Extension ext : requested)
+ {
+ // Only choose the first extension if multiple with the same name.
+ long matches = negotiatedExtensions.stream().filter(e -> e.getName().equals(ext.getName())).count();
+ if (matches == 0)
+ negotiatedExtensions.add(ext);
+ }
+
+ return negotiatedExtensions;
}
@Override
diff --git a/jetty-websocket/javax-websocket-tests/fuzzingclient.json b/jetty-websocket/javax-websocket-tests/fuzzingclient.json
new file mode 100644
index 00000000000..fbe1ce7e85e
--- /dev/null
+++ b/jetty-websocket/javax-websocket-tests/fuzzingclient.json
@@ -0,0 +1,18 @@
+{
+ "options": {
+ "failByDrop": false
+ },
+ "outdir": "./target/reports/servers",
+ "servers": [
+ {
+ "agent": "Jetty-10.0.0-SNAPSHOT",
+ "url": "ws://127.0.0.1:9001",
+ "options": {
+ "version": 18
+ }
+ }
+ ],
+ "cases": ["*"],
+ "exclude-cases": [],
+ "exclude-agent-cases": {}
+}
diff --git a/jetty-websocket/javax-websocket-tests/fuzzingserver.json b/jetty-websocket/javax-websocket-tests/fuzzingserver.json
new file mode 100644
index 00000000000..ade31281937
--- /dev/null
+++ b/jetty-websocket/javax-websocket-tests/fuzzingserver.json
@@ -0,0 +1,10 @@
+{
+ "options": {
+ "failByDrop": false
+ },
+ "url": "ws://127.0.0.1:9001",
+ "outdir": "./target/reports/clients",
+ "cases": ["*"],
+ "exclude-cases": [],
+ "exclude-agent-cases": {}
+}
diff --git a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/EventSocket.java b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/EventSocket.java
index 86828f5ac72..45d373eed81 100644
--- a/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/EventSocket.java
+++ b/jetty-websocket/javax-websocket-tests/src/main/java/org/eclipse/jetty/websocket/javax/tests/EventSocket.java
@@ -52,28 +52,32 @@ public class EventSocket
public void onOpen(Session session)
{
this.session = session;
- LOG.info("{} onOpen(): {}", toString(), session);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onOpen(): {}", toString(), session);
openLatch.countDown();
}
@OnMessage
public void onMessage(String message) throws IOException
{
- LOG.info("{} onMessage(): {}", toString(), message);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onMessage(): {}", toString(), message);
messageQueue.offer(message);
}
@OnClose
public void onClose(CloseReason reason)
{
- LOG.info("{} onClose(): {}", toString(), reason);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onClose(): {}", toString(), reason);
closeLatch.countDown();
}
@OnError
public void onError(Throwable cause)
{
- LOG.info("{} onError(): {}", toString(), cause);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onError(): {}", toString(), cause);
error = cause;
}
}
diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnClient.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnClient.java
new file mode 100644
index 00000000000..f722737e4af
--- /dev/null
+++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnClient.java
@@ -0,0 +1,200 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.javax.tests.autobahn;
+
+import java.net.URI;
+import java.util.concurrent.TimeUnit;
+import javax.websocket.CloseReason;
+
+import org.eclipse.jetty.util.Jetty;
+import org.eclipse.jetty.util.UrlEncoded;
+import org.eclipse.jetty.util.component.LifeCycle;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.websocket.javax.client.JavaxWebSocketClientContainer;
+import org.eclipse.jetty.websocket.javax.tests.EventSocket;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * WebSocket Client for use with autobahn websocket testsuite (wstest).
+ *
+ * Installing Autobahn:
+ *
+ *
+ * # For Debian / Ubuntu
+ * $ sudo apt-get install python python-dev python-twisted
+ * $ sudo apt-get install python-pip
+ * $ sudo pip install autobahntestsuite
+ *
+ * # For Fedora / Redhat
+ * $ sudo yum install python python-dev python-pip twisted
+ * $ sudo yum install libffi-devel
+ * $ sudo pip install autobahntestsuite
+ *
+ *
+ * Upgrading an existing installation of autobahntestsuite
+ *
+ *
+ * $ sudo pip install -U autobahntestsuite
+ *
+ *
+ * Running Autobahn Fuzzing Server (which you run this client implementation against):
+ *
+ *
+ * # Change to javax-websocket-tests directory first.
+ * $ cd jetty-websocket/javax-websocket-tests/
+ * $ wstest --mode=fuzzingserver --spec=fuzzingserver.json
+ *
+ * # Report output is configured (in the fuzzingserver.json) at location:
+ * $ ls target/reports/clients/
+ *
+ */
+public class JavaxAutobahnClient
+{
+ public static void main(String[] args)
+ {
+ String hostname = "localhost";
+ int port = 9001;
+
+ if (args.length > 0)
+ hostname = args[0];
+ if (args.length > 1)
+ port = Integer.parseInt(args[1]);
+
+ // Optional case numbers
+ // NOTE: these are url query parameter case numbers (whole integers, eg "6"), not the case ids (eg "7.3.1")
+ int[] caseNumbers = null;
+ if (args.length > 2)
+ {
+ int offset = 2;
+ caseNumbers = new int[args.length - offset];
+ for (int i = offset; i < args.length; i++)
+ {
+ caseNumbers[i - offset] = Integer.parseInt(args[i]);
+ }
+ }
+
+ JavaxAutobahnClient client = null;
+ try
+ {
+ String userAgent = "JettyWebsocketClient/" + Jetty.VERSION;
+ client = new JavaxAutobahnClient(hostname, port, userAgent);
+
+ LOG.info("Running test suite...");
+ LOG.info("Using Fuzzing Server: {}:{}", hostname, port);
+ LOG.info("User Agent: {}", userAgent);
+
+ if (caseNumbers == null)
+ {
+ int caseCount = client.getCaseCount();
+ LOG.info("Will run all {} cases ...", caseCount);
+ for (int caseNum = 1; caseNum <= caseCount; caseNum++)
+ {
+ LOG.info("Running case {} (of {}) ...", caseNum, caseCount);
+ client.runCaseByNumber(caseNum);
+ }
+ }
+ else
+ {
+ LOG.info("Will run %d cases ...", caseNumbers.length);
+ for (int caseNum : caseNumbers)
+ {
+ client.runCaseByNumber(caseNum);
+ }
+ }
+ LOG.info("All test cases executed.");
+ client.updateReports();
+ }
+ catch (Throwable t)
+ {
+ LOG.warn("Test Failed", t);
+ }
+ finally
+ {
+ if (client != null)
+ client.stop();
+ }
+ }
+
+ private static final Logger LOG = Log.getLogger(JavaxAutobahnClient.class);
+ private URI baseWebsocketUri;
+ private JavaxWebSocketClientContainer clientContainer;
+ private String userAgent;
+
+ public JavaxAutobahnClient(String hostname, int port, String userAgent) throws Exception
+ {
+ this.userAgent = userAgent;
+ this.baseWebsocketUri = new URI("ws://" + hostname + ":" + port);
+ this.clientContainer = new JavaxWebSocketClientContainer();
+ clientContainer.start();
+ }
+
+ public void stop()
+ {
+ LifeCycle.stop(clientContainer);
+ }
+
+ public int getCaseCount()
+ {
+ URI wsUri = baseWebsocketUri.resolve("/getCaseCount");
+ EventSocket onCaseCount = new EventSocket();
+
+ try
+ {
+ clientContainer.connectToServer(onCaseCount, wsUri);
+ String msg = onCaseCount.messageQueue.poll(10, TimeUnit.SECONDS);
+ onCaseCount.session.close(new CloseReason(CloseReason.CloseCodes.GOING_AWAY, null));
+ assertTrue(onCaseCount.closeLatch.await(2, TimeUnit.SECONDS));
+ assertNotNull(msg);
+ return Integer.decode(msg);
+ }
+ catch (Throwable t)
+ {
+ throw new IllegalStateException("Unable to get Case Count", t);
+ }
+ }
+
+ public void runCaseByNumber(int caseNumber) throws Exception
+ {
+ URI wsUri = baseWebsocketUri.resolve("/runCase?case=" + caseNumber + "&agent=" + UrlEncoded.encodeString(userAgent));
+ LOG.info("test uri: {}", wsUri);
+
+ JavaxAutobahnSocket echoHandler = new JavaxAutobahnSocket();
+ clientContainer.connectToServer(echoHandler, wsUri);
+
+ // Wait up to 5 min as some of the tests can take a while
+ if (!echoHandler.closeLatch.await(5, TimeUnit.MINUTES))
+ {
+ LOG.warn("could not close {}, closing session", echoHandler);
+ echoHandler.session.close(new CloseReason(CloseReason.CloseCodes.GOING_AWAY, null));
+ }
+ }
+
+ public void updateReports() throws Exception
+ {
+ URI wsUri = baseWebsocketUri.resolve("/updateReports?agent=" + UrlEncoded.encodeString(userAgent));
+ EventSocket onUpdateReports = new EventSocket();
+ clientContainer.connectToServer(onUpdateReports, wsUri);
+ assertTrue(onUpdateReports.closeLatch.await(15, TimeUnit.SECONDS));
+ LOG.info("Reports updated.");
+ LOG.info("Test suite finished!");
+ }
+}
diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnServer.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnServer.java
new file mode 100644
index 00000000000..543d6812794
--- /dev/null
+++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnServer.java
@@ -0,0 +1,82 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.javax.tests.autobahn;
+
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
+
+/**
+ * WebSocket Server for use with autobahn websocket testsuite (wstest).
+ *
+ * Installing Autobahn:
+ *
+ *
+ * # For Debian / Ubuntu
+ * $ sudo apt-get install python python-dev python-twisted
+ * $ sudo apt-get install python-pip
+ * $ sudo pip install autobahntestsuite
+ *
+ * # For Fedora / Redhat
+ * $ sudo yum install python python-dev python-pip twisted
+ * $ sudo yum install libffi-devel
+ * $ sudo pip install autobahntestsuite
+ *
+ *
+ * Upgrading an existing installation of autobahntestsuite
+ *
+ *
+ * $ sudo pip install -U autobahntestsuite
+ *
+ *
+ * Running Autobahn Fuzzing Client (against this server implementation):
+ *
+ *
+ * # Change to javax-websocket-tests directory first.
+ * $ cd jetty-websocket/javax-websocket-tests/
+ * $ wstest --mode=fuzzingclient --spec=fuzzingclient.json
+ *
+ * # Report output is configured (in the fuzzingclient.json) at location:
+ * $ ls target/reports/servers/
+ *
+ */
+public class JavaxAutobahnServer
+{
+ public static void main(String[] args) throws Exception
+ {
+ int port = 9001; // same port as found in fuzzing-client.json
+ if (args != null && args.length > 0)
+ port = Integer.parseInt(args[0]);
+
+ Server server = new Server(port);
+ ServerConnector connector = new ServerConnector(server);
+ connector.setIdleTimeout(10000);
+ server.addConnector(connector);
+ ServletContextHandler context = new ServletContextHandler();
+ context.setContextPath("/");
+ server.setHandler(context);
+
+ JavaxWebSocketServletContainerInitializer.configure(context, (servletContext, container)->
+ container.addEndpoint(JavaxAutobahnSocket.class));
+
+ server.start();
+ server.join();
+ }
+}
diff --git a/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnSocket.java b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnSocket.java
new file mode 100644
index 00000000000..be746df58b3
--- /dev/null
+++ b/jetty-websocket/javax-websocket-tests/src/test/java/org/eclipse/jetty/websocket/javax/tests/autobahn/JavaxAutobahnSocket.java
@@ -0,0 +1,76 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.javax.tests.autobahn;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.concurrent.CountDownLatch;
+import javax.websocket.ClientEndpoint;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+
+@ClientEndpoint
+@ServerEndpoint("/")
+public class JavaxAutobahnSocket
+{
+ private static final Logger LOG = Log.getLogger(JavaxAutobahnSocket.class);
+
+ public Session session;
+ public CountDownLatch closeLatch = new CountDownLatch(1);
+
+ @OnOpen
+ public void onConnect(Session session)
+ {
+ this.session = session;
+ session.setMaxTextMessageBufferSize(Integer.MAX_VALUE);
+ session.setMaxBinaryMessageBufferSize(Integer.MAX_VALUE);
+ }
+
+ @OnMessage
+ public void onText(String message) throws IOException
+ {
+ session.getBasicRemote().sendText(message);
+ }
+
+ @OnMessage
+ public void onBinary(ByteBuffer message) throws IOException
+ {
+ session.getBasicRemote().sendBinary(message);
+ }
+
+ @OnError
+ public void onError(Throwable t)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("onError()", t);
+ }
+
+ @OnClose
+ public void onClose()
+ {
+ closeLatch.countDown();
+ }
+}
diff --git a/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPolicy.java b/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPolicy.java
index 8b089fdbcba..f043b864cb6 100644
--- a/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPolicy.java
+++ b/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPolicy.java
@@ -84,6 +84,20 @@ public interface WebSocketPolicy
*/
long getMaxTextMessageSize();
+ /**
+ * The maximum payload size of any WebSocket Frame which can be received.
+ *
+ * @return the maximum size of a WebSocket Frame.
+ */
+ long getMaxFrameSize();
+
+ /**
+ * If true, frames are automatically fragmented to respect the maximum frame size.
+ *
+ * @return whether to automatically fragment incoming WebSocket Frames.
+ */
+ boolean isAutoFragment();
+
/**
* The duration that a websocket may be idle before being closed by the implementation
*
@@ -123,4 +137,21 @@ public interface WebSocketPolicy
* @param size the maximum allowed size of a text message.
*/
void setMaxTextMessageSize(long size);
+
+ /**
+ * The maximum payload size of any WebSocket Frame which can be received.
+ *
+ * WebSocket Frames over this maximum will result in a close code 1009 {@link StatusCode#MESSAGE_TOO_LARGE}
+ *
+ *
+ * @param maxFrameSize the maximum allowed size of a WebSocket Frame.
+ */
+ void setMaxFrameSize(long maxFrameSize);
+
+ /**
+ * If set to true, frames are automatically fragmented to respect the maximum frame size.
+ *
+ * @param autoFragment whether to automatically fragment incoming WebSocket Frames.
+ */
+ void setAutoFragment(boolean autoFragment);
}
diff --git a/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketMessage.java b/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketMessage.java
index 00483883708..064fce15d83 100644
--- a/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketMessage.java
+++ b/jetty-websocket/jetty-websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketMessage.java
@@ -45,6 +45,8 @@ import org.eclipse.jetty.websocket.api.Session;
*
* Binary Message Versions
*
+ * - {@code public void methodName(ByteBuffer message)}
+ * public void methodName({@link Session} session, ByteBuffer message)
* - {@code public void methodName(byte buf[], int offset, int length)}
* public void methodName({@link Session} session, byte buf[], int offset, int length)
* - {@code public void methodName(InputStream stream)}
diff --git a/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java b/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
index fd07a8c0eb3..c37ff27ecb9 100644
--- a/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
+++ b/jetty-websocket/jetty-websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java
@@ -237,6 +237,18 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
return configurationCustomizer.getMaxTextMessageSize();
}
+ @Override
+ public long getMaxFrameSize()
+ {
+ return configurationCustomizer.getMaxFrameSize();
+ }
+
+ @Override
+ public boolean isAutoFragment()
+ {
+ return configurationCustomizer.isAutoFragment();
+ }
+
@Override
public void setIdleTimeout(Duration duration)
{
@@ -268,6 +280,18 @@ public class WebSocketClient extends ContainerLifeCycle implements WebSocketPoli
configurationCustomizer.setMaxTextMessageSize(size);
}
+ @Override
+ public void setMaxFrameSize(long maxFrameSize)
+ {
+ configurationCustomizer.setMaxFrameSize(maxFrameSize);
+ }
+
+ @Override
+ public void setAutoFragment(boolean autoFragment)
+ {
+ configurationCustomizer.setAutoFragment(autoFragment);
+ }
+
public SocketAddress getBindAddress()
{
return getHttpClient().getBindAddress();
diff --git a/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/JettyWebSocketFrameHandler.java b/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/JettyWebSocketFrameHandler.java
index 6ce9a1fe59f..9a2ccaa23e7 100644
--- a/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/JettyWebSocketFrameHandler.java
+++ b/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/JettyWebSocketFrameHandler.java
@@ -29,6 +29,7 @@ import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.websocket.api.BatchMode;
import org.eclipse.jetty.websocket.api.UpgradeRequest;
import org.eclipse.jetty.websocket.api.UpgradeResponse;
+import org.eclipse.jetty.websocket.api.WriteCallback;
import org.eclipse.jetty.websocket.common.invoke.InvalidSignatureException;
import org.eclipse.jetty.websocket.core.BadPayloadException;
import org.eclipse.jetty.websocket.core.CloseException;
@@ -359,10 +360,8 @@ public class JettyWebSocketFrameHandler implements FrameHandler
else
{
// Automatically respond
- Frame pong = new Frame(OpCode.PONG);
- if (frame.hasPayload())
- pong.setPayload(frame.getPayload());
- getSession().getRemote().getCoreSession().sendFrame(pong, Callback.NOOP, false);
+ ByteBuffer payload = BufferUtil.copy(frame.getPayload());
+ getSession().getRemote().sendPong(payload, WriteCallback.NOOP);
}
callback.succeeded();
}
diff --git a/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java b/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java
index e136ac32562..80a5fcc2493 100644
--- a/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java
+++ b/jetty-websocket/jetty-websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java
@@ -117,6 +117,18 @@ public class WebSocketSession extends AbstractLifeCycle implements Session, Susp
return coreSession.getMaxTextMessageSize();
}
+ @Override
+ public long getMaxFrameSize()
+ {
+ return coreSession.getMaxFrameSize();
+ }
+
+ @Override
+ public boolean isAutoFragment()
+ {
+ return coreSession.isAutoFragment();
+ }
+
@Override
public void setIdleTimeout(Duration duration)
{
@@ -147,6 +159,18 @@ public class WebSocketSession extends AbstractLifeCycle implements Session, Susp
coreSession.setMaxTextMessageSize(size);
}
+ @Override
+ public void setMaxFrameSize(long maxFrameSize)
+ {
+ coreSession.setMaxFrameSize(maxFrameSize);
+ }
+
+ @Override
+ public void setAutoFragment(boolean autoFragment)
+ {
+ coreSession.setAutoFragment(autoFragment);
+ }
+
@Override
public String getProtocolVersion()
{
diff --git a/jetty-websocket/jetty-websocket-common/src/test/java/org/eclipse/jetty/websocket/common/OutgoingMessageCapture.java b/jetty-websocket/jetty-websocket-common/src/test/java/org/eclipse/jetty/websocket/common/OutgoingMessageCapture.java
index 5955296793f..76164af7236 100644
--- a/jetty-websocket/jetty-websocket-common/src/test/java/org/eclipse/jetty/websocket/common/OutgoingMessageCapture.java
+++ b/jetty-websocket/jetty-websocket-common/src/test/java/org/eclipse/jetty/websocket/common/OutgoingMessageCapture.java
@@ -295,6 +295,18 @@ public class OutgoingMessageCapture extends FrameHandler.CoreSession.Empty imple
return maxMessageSize;
}
+ @Override
+ public long getMaxFrameSize()
+ {
+ return 0;
+ }
+
+ @Override
+ public boolean isAutoFragment()
+ {
+ return false;
+ }
+
@Override
public void setIdleTimeout(Duration duration)
{
@@ -319,6 +331,16 @@ public class OutgoingMessageCapture extends FrameHandler.CoreSession.Empty imple
public void setMaxTextMessageSize(long size)
{
}
+
+ @Override
+ public void setMaxFrameSize(long maxFrameSize)
+ {
+ }
+
+ @Override
+ public void setAutoFragment(boolean autoFragment)
+ {
+ }
};
}
}
diff --git a/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServerContainer.java b/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServerContainer.java
index b6b7938f11f..cb2b886e879 100644
--- a/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServerContainer.java
+++ b/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServerContainer.java
@@ -206,6 +206,18 @@ public class JettyWebSocketServerContainer extends ContainerLifeCycle implements
return customizer.getMaxTextMessageSize();
}
+ @Override
+ public long getMaxFrameSize()
+ {
+ return customizer.getMaxFrameSize();
+ }
+
+ @Override
+ public boolean isAutoFragment()
+ {
+ return customizer.isAutoFragment();
+ }
+
@Override
public void setIdleTimeout(Duration duration)
{
@@ -235,4 +247,16 @@ public class JettyWebSocketServerContainer extends ContainerLifeCycle implements
{
customizer.setMaxTextMessageSize(size);
}
+
+ @Override
+ public void setMaxFrameSize(long maxFrameSize)
+ {
+ customizer.setMaxFrameSize(maxFrameSize);
+ }
+
+ @Override
+ public void setAutoFragment(boolean autoFragment)
+ {
+ customizer.setAutoFragment(autoFragment);
+ }
}
diff --git a/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServletFactory.java b/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServletFactory.java
index 0c424b494d0..15c313eddc9 100644
--- a/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServletFactory.java
+++ b/jetty-websocket/jetty-websocket-server/src/main/java/org/eclipse/jetty/websocket/server/JettyWebSocketServletFactory.java
@@ -22,7 +22,6 @@ import java.time.Duration;
import java.util.Set;
import org.eclipse.jetty.http.pathmap.PathSpec;
-import org.eclipse.jetty.websocket.api.StatusCode;
import org.eclipse.jetty.websocket.api.WebSocketBehavior;
import org.eclipse.jetty.websocket.api.WebSocketPolicy;
import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
@@ -50,44 +49,25 @@ public class JettyWebSocketServletFactory implements WebSocketPolicy
return WebSocketBehavior.SERVER;
}
- /**
- * If true, frames are automatically fragmented to respect the maximum frame size.
- *
- * @return whether to automatically fragment incoming WebSocket Frames.
- */
+ @Override
public boolean isAutoFragment()
{
return factory.isAutoFragment();
}
- /**
- * If set to true, frames are automatically fragmented to respect the maximum frame size.
- *
- * @param autoFragment whether to automatically fragment incoming WebSocket Frames.
- */
+ @Override
public void setAutoFragment(boolean autoFragment)
{
factory.setAutoFragment(autoFragment);
}
- /**
- * The maximum payload size of any WebSocket Frame which can be received.
- *
- * @return the maximum size of a WebSocket Frame.
- */
+ @Override
public long getMaxFrameSize()
{
return factory.getMaxFrameSize();
}
- /**
- * The maximum payload size of any WebSocket Frame which can be received.
- *
- * WebSocket Frames over this maximum will result in a close code 1009 {@link StatusCode#MESSAGE_TOO_LARGE}
- *
- *
- * @param maxFrameSize the maximum allowed size of a WebSocket Frame.
- */
+ @Override
public void setMaxFrameSize(long maxFrameSize)
{
factory.setMaxFrameSize(maxFrameSize);
diff --git a/jetty-websocket/jetty-websocket-tests/fuzzingclient.json b/jetty-websocket/jetty-websocket-tests/fuzzingclient.json
new file mode 100644
index 00000000000..fbe1ce7e85e
--- /dev/null
+++ b/jetty-websocket/jetty-websocket-tests/fuzzingclient.json
@@ -0,0 +1,18 @@
+{
+ "options": {
+ "failByDrop": false
+ },
+ "outdir": "./target/reports/servers",
+ "servers": [
+ {
+ "agent": "Jetty-10.0.0-SNAPSHOT",
+ "url": "ws://127.0.0.1:9001",
+ "options": {
+ "version": 18
+ }
+ }
+ ],
+ "cases": ["*"],
+ "exclude-cases": [],
+ "exclude-agent-cases": {}
+}
diff --git a/jetty-websocket/jetty-websocket-tests/fuzzingserver.json b/jetty-websocket/jetty-websocket-tests/fuzzingserver.json
new file mode 100644
index 00000000000..ade31281937
--- /dev/null
+++ b/jetty-websocket/jetty-websocket-tests/fuzzingserver.json
@@ -0,0 +1,10 @@
+{
+ "options": {
+ "failByDrop": false
+ },
+ "url": "ws://127.0.0.1:9001",
+ "outdir": "./target/reports/clients",
+ "cases": ["*"],
+ "exclude-cases": [],
+ "exclude-agent-cases": {}
+}
diff --git a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EventSocket.java b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EventSocket.java
index ae660da1c09..cafa1e41044 100644
--- a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EventSocket.java
+++ b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EventSocket.java
@@ -57,14 +57,16 @@ public class EventSocket
{
this.session = session;
behavior = session.getPolicy().getBehavior().name();
- LOG.info("{} onOpen(): {}", toString(), session);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onOpen(): {}", toString(), session);
openLatch.countDown();
}
@OnWebSocketMessage
public void onMessage(String message) throws IOException
{
- LOG.info("{} onMessage(): {}", toString(), message);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onMessage(): {}", toString(), message);
messageQueue.offer(message);
}
@@ -72,14 +74,16 @@ public class EventSocket
public void onMessage(byte buf[], int offset, int len)
{
ByteBuffer message = ByteBuffer.wrap(buf, offset, len);
- LOG.info("{} onMessage(): {}", toString(), message);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onMessage(): {}", toString(), message);
binaryMessageQueue.offer(message);
}
@OnWebSocketClose
public void onClose(int statusCode, String reason)
{
- LOG.info("{} onClose(): {}:{}", toString(), statusCode, reason);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onClose(): {}:{}", toString(), statusCode, reason);
this.statusCode = statusCode;
this.reason = reason;
closeLatch.countDown();
@@ -88,7 +92,8 @@ public class EventSocket
@OnWebSocketError
public void onError(Throwable cause)
{
- LOG.info("{} onError(): {}", toString(), cause);
+ if (LOG.isDebugEnabled())
+ LOG.debug("{} onError(): {}", toString(), cause);
error = cause;
errorLatch.countDown();
}
diff --git a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnClient.java b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnClient.java
new file mode 100644
index 00000000000..166860784f4
--- /dev/null
+++ b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnClient.java
@@ -0,0 +1,227 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.tests.autobahn;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.eclipse.jetty.util.Jetty;
+import org.eclipse.jetty.util.UrlEncoded;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.StatusCode;
+import org.eclipse.jetty.websocket.client.WebSocketClient;
+import org.eclipse.jetty.websocket.tests.EchoSocket;
+import org.eclipse.jetty.websocket.tests.EventSocket;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * WebSocket Client for use with autobahn websocket testsuite (wstest).
+ *
+ * Installing Autobahn:
+ *
+ *
+ * # For Debian / Ubuntu
+ * $ sudo apt-get install python python-dev python-twisted
+ * $ sudo apt-get install python-pip
+ * $ sudo pip install autobahntestsuite
+ *
+ * # For Fedora / Redhat
+ * $ sudo yum install python python-dev python-pip twisted
+ * $ sudo yum install libffi-devel
+ * $ sudo pip install autobahntestsuite
+ *
+ *
+ * Upgrading an existing installation of autobahntestsuite
+ *
+ *
+ * $ sudo pip install -U autobahntestsuite
+ *
+ *
+ * Running Autobahn Fuzzing Server (which you run this client implementation against):
+ *
+ *
+ * # Change to jetty-websocket-tests directory first.
+ * $ cd jetty-websocket/jetty-websocket-tests/
+ * $ wstest --mode=fuzzingserver --spec=fuzzingserver.json
+ *
+ * # Report output is configured (in the fuzzingserver.json) at location:
+ * $ ls target/reports/clients/
+ *
+ */
+public class JettyAutobahnClient
+{
+ public static void main(String[] args)
+ {
+ String hostname = "localhost";
+ int port = 9001;
+
+ if (args.length > 0)
+ hostname = args[0];
+ if (args.length > 1)
+ port = Integer.parseInt(args[1]);
+
+ // Optional case numbers
+ // NOTE: these are url query parameter case numbers (whole integers, eg "6"), not the case ids (eg "7.3.1")
+ int[] caseNumbers = null;
+ if (args.length > 2)
+ {
+ int offset = 2;
+ caseNumbers = new int[args.length - offset];
+ for (int i = offset; i < args.length; i++)
+ {
+ caseNumbers[i - offset] = Integer.parseInt(args[i]);
+ }
+ }
+
+ JettyAutobahnClient client = null;
+ try
+ {
+ String userAgent = "JettyWebsocketClient/" + Jetty.VERSION;
+ client = new JettyAutobahnClient(hostname, port, userAgent);
+
+ LOG.info("Running test suite...");
+ LOG.info("Using Fuzzing Server: {}:{}", hostname, port);
+ LOG.info("User Agent: {}", userAgent);
+
+ if (caseNumbers == null)
+ {
+ int caseCount = client.getCaseCount();
+ LOG.info("Will run all {} cases ...", caseCount);
+ for (int caseNum = 1; caseNum <= caseCount; caseNum++)
+ {
+ LOG.info("Running case {} (of {}) ...", caseNum, caseCount);
+ client.runCaseByNumber(caseNum);
+ }
+ }
+ else
+ {
+ LOG.info("Will run %d cases ...", caseNumbers.length);
+ for (int caseNum : caseNumbers)
+ {
+ client.runCaseByNumber(caseNum);
+ }
+ }
+ LOG.info("All test cases executed.");
+ client.updateReports();
+ }
+ catch (Throwable t)
+ {
+ LOG.warn("Test Failed", t);
+ }
+ finally
+ {
+ if (client != null)
+ client.shutdown();
+ }
+ }
+
+ private static final Logger LOG = Log.getLogger(JettyAutobahnClient.class);
+ private URI baseWebsocketUri;
+ private WebSocketClient client;
+ private String userAgent;
+
+ public JettyAutobahnClient(String hostname, int port, String userAgent) throws Exception
+ {
+ this.userAgent = userAgent;
+ this.baseWebsocketUri = new URI("ws://" + hostname + ":" + port);
+ this.client = new WebSocketClient();
+ this.client.start();
+ }
+
+ public int getCaseCount() throws IOException, InterruptedException
+ {
+ URI wsUri = baseWebsocketUri.resolve("/getCaseCount");
+ EventSocket onCaseCount = new EventSocket();
+ CompletableFuture response = client.connect(onCaseCount, wsUri);
+
+ if (waitForUpgrade(wsUri, response))
+ {
+ String msg = onCaseCount.messageQueue.poll(10, TimeUnit.SECONDS);
+ onCaseCount.session.close(StatusCode.SHUTDOWN, null);
+ assertTrue(onCaseCount.closeLatch.await(2, TimeUnit.SECONDS));
+ assertNotNull(msg);
+ return Integer.decode(msg);
+ }
+ throw new IllegalStateException("Unable to get Case Count");
+ }
+
+ public void runCaseByNumber(int caseNumber) throws IOException, InterruptedException
+ {
+ URI wsUri = baseWebsocketUri.resolve("/runCase?case=" + caseNumber + "&agent=" + UrlEncoded.encodeString(userAgent));
+ LOG.info("test uri: {}", wsUri);
+
+ EchoSocket echoHandler = new JettyAutobahnSocket();
+ Future response = client.connect(echoHandler, wsUri);
+ if (waitForUpgrade(wsUri, response))
+ {
+ // Wait up to 5 min as some of the tests can take a while
+ if (!echoHandler.closeLatch.await(5, TimeUnit.MINUTES))
+ {
+ LOG.warn("could not close {}, aborting session", echoHandler);
+ echoHandler.session.disconnect();
+ }
+ }
+ }
+
+ public void shutdown()
+ {
+ try
+ {
+ client.stop();
+ }
+ catch (Exception e)
+ {
+ LOG.warn("Unable to stop WebSocketClient", e);
+ }
+ }
+
+ public void updateReports() throws IOException, InterruptedException, ExecutionException, TimeoutException
+ {
+ URI wsUri = baseWebsocketUri.resolve("/updateReports?agent=" + UrlEncoded.encodeString(userAgent));
+ EventSocket onUpdateReports = new EventSocket();
+ Future response = client.connect(onUpdateReports, wsUri);
+ response.get(5, TimeUnit.SECONDS);
+ assertTrue(onUpdateReports.closeLatch.await(15, TimeUnit.SECONDS));
+ LOG.info("Reports updated.");
+ LOG.info("Test suite finished!");
+ }
+
+ private boolean waitForUpgrade(URI wsUri, Future response)
+ {
+ try
+ {
+ response.get(10, TimeUnit.SECONDS);
+ return true;
+ }
+ catch (Throwable t)
+ {
+ LOG.warn("Unable to connect to: " + wsUri, t);
+ return false;
+ }
+ }
+}
diff --git a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnServer.java b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnServer.java
new file mode 100644
index 00000000000..bc5eb25c26a
--- /dev/null
+++ b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnServer.java
@@ -0,0 +1,82 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.tests.autobahn;
+
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
+
+/**
+ * WebSocket Server for use with autobahn websocket testsuite (wstest).
+ *
+ * Installing Autobahn:
+ *
+ *
+ * # For Debian / Ubuntu
+ * $ sudo apt-get install python python-dev python-twisted
+ * $ sudo apt-get install python-pip
+ * $ sudo pip install autobahntestsuite
+ *
+ * # For Fedora / Redhat
+ * $ sudo yum install python python-dev python-pip twisted
+ * $ sudo yum install libffi-devel
+ * $ sudo pip install autobahntestsuite
+ *
+ *
+ * Upgrading an existing installation of autobahntestsuite
+ *
+ *
+ * $ sudo pip install -U autobahntestsuite
+ *
+ *
+ * Running Autobahn Fuzzing Client (against this server implementation):
+ *
+ *
+ * # Change to jetty-websocket-tests directory first.
+ * $ cd jetty-websocket/jetty-websocket-tests/
+ * $ wstest --mode=fuzzingclient --spec=fuzzingclient.json
+ *
+ * # Report output is configured (in the fuzzingclient.json) at location:
+ * $ ls target/reports/servers/
+ *
+ */
+public class JettyAutobahnServer
+{
+ public static void main(String[] args) throws Exception
+ {
+ int port = 9001; // same port as found in fuzzing-client.json
+ if (args != null && args.length > 0)
+ port = Integer.parseInt(args[0]);
+
+ Server server = new Server(port);
+ ServerConnector connector = new ServerConnector(server);
+ connector.setIdleTimeout(10000);
+ server.addConnector(connector);
+ ServletContextHandler context = new ServletContextHandler();
+ context.setContextPath("/");
+ server.setHandler(context);
+
+ JettyWebSocketServletContainerInitializer.configure(context, (servletContext, container)->
+ container.addMapping("/", (req, resp) -> new JettyAutobahnSocket()));
+
+ server.start();
+ server.join();
+ }
+}
diff --git a/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnSocket.java b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnSocket.java
new file mode 100644
index 00000000000..d1d99cf659a
--- /dev/null
+++ b/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/autobahn/JettyAutobahnSocket.java
@@ -0,0 +1,37 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2019 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.websocket.tests.autobahn;
+
+import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.annotations.WebSocket;
+import org.eclipse.jetty.websocket.core.WebSocketConstants;
+import org.eclipse.jetty.websocket.tests.EchoSocket;
+
+@WebSocket
+public class JettyAutobahnSocket extends EchoSocket
+{
+ @Override
+ public void onOpen(Session session)
+ {
+ super.onOpen(session);
+ session.setMaxTextMessageSize(Long.MAX_VALUE);
+ session.setMaxBinaryMessageSize(Long.MAX_VALUE);
+ session.setMaxFrameSize(WebSocketConstants.DEFAULT_MAX_FRAME_SIZE*2);
+ }
+}
diff --git a/jetty-websocket/websocket-core/pom.xml b/jetty-websocket/websocket-core/pom.xml
index 1e3067f593b..60879dcaa46 100644
--- a/jetty-websocket/websocket-core/pom.xml
+++ b/jetty-websocket/websocket-core/pom.xml
@@ -141,7 +141,7 @@
- org.eclipse.jetty.websocket.core.autobahn.AutobahnWebSocketServer
+ org.eclipse.jetty.websocket.core.autobahn.CoreAutobahnServer
diff --git a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/WebSocketNegotiationTest.java b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/WebSocketNegotiationTest.java
index 848724c5e05..ce78b1cf86f 100644
--- a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/WebSocketNegotiationTest.java
+++ b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/WebSocketNegotiationTest.java
@@ -48,6 +48,7 @@ import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -104,6 +105,7 @@ public class WebSocketNegotiationTest extends WebSocketTester
break;
case "test":
+ case "testExtensionThatDoesNotExist":
case "testInvalidExtensionParameter":
case "testAcceptTwoExtensionsOfSameName":
case "testInvalidUpgradeRequest":
@@ -239,6 +241,23 @@ public class WebSocketNegotiationTest extends WebSocketTester
assertNull(extensionHeader.get(5, TimeUnit.SECONDS));
}
+ @Test
+ public void testExtensionThatDoesNotExist() throws Exception
+ {
+ Socket client = new Socket();
+ client.connect(new InetSocketAddress("127.0.0.1", server.getLocalPort()));
+
+ HttpFields httpFields = newUpgradeRequest("nonExistentExtensionName");
+ String upgradeRequest = "GET / HTTP/1.1\r\n" + httpFields;
+ client.getOutputStream().write(upgradeRequest.getBytes(StandardCharsets.ISO_8859_1));
+ String response = getUpgradeResponse(client.getInputStream());
+
+ assertThat(response, startsWith("HTTP/1.1 101 Switching Protocols"));
+ assertThat(response, containsString("Sec-WebSocket-Protocol: test"));
+ assertThat(response, containsString("Sec-WebSocket-Accept: +WahVcVmeMLKQUMm0fvPrjSjwzI="));
+ assertThat(response, not(containsString(HttpHeader.SEC_WEBSOCKET_EXTENSIONS.asString())));
+ }
+
@Test
public void testAcceptTwoExtensionsOfSameName() throws Exception
{
diff --git a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketClient.java b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnClient.java
similarity index 95%
rename from jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketClient.java
rename to jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnClient.java
index 62291bb8684..6503abf72ea 100644
--- a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketClient.java
+++ b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnClient.java
@@ -62,7 +62,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* Running Autobahn Fuzzing Server (which you run this client implementation against):
*
*
- * # Change to websocket-core
+ * # Change to websocket-core first
* $ cd jetty-websocket/websocket-core
* $ wstest --mode=fuzzingserver --spec=fuzzingserver.json
*
@@ -70,7 +70,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
* $ ls target/reports/clients/
*
*/
-public class AutobahnWebSocketClient
+public class CoreAutobahnClient
{
public static void main(String[] args)
{
@@ -95,11 +95,11 @@ public class AutobahnWebSocketClient
}
}
- AutobahnWebSocketClient client = null;
+ CoreAutobahnClient client = null;
try
{
String userAgent = "JettyWebsocketClient/" + Jetty.VERSION;
- client = new AutobahnWebSocketClient(hostname, port, userAgent);
+ client = new CoreAutobahnClient(hostname, port, userAgent);
LOG.info("Running test suite...");
LOG.info("Using Fuzzing Server: {}:{}", hostname, port);
@@ -137,12 +137,12 @@ public class AutobahnWebSocketClient
}
}
- private static final Logger LOG = Log.getLogger(AutobahnWebSocketClient.class);
+ private static final Logger LOG = Log.getLogger(CoreAutobahnClient.class);
private URI baseWebsocketUri;
private WebSocketCoreClient client;
private String userAgent;
- public AutobahnWebSocketClient(String hostname, int port, String userAgent) throws Exception
+ public CoreAutobahnClient(String hostname, int port, String userAgent) throws Exception
{
this.userAgent = userAgent;
this.baseWebsocketUri = new URI("ws://" + hostname + ":" + port);
diff --git a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketServer.java b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnServer.java
similarity index 98%
rename from jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketServer.java
rename to jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnServer.java
index 9f1978534d1..93ba4f58346 100644
--- a/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnWebSocketServer.java
+++ b/jetty-websocket/websocket-core/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnServer.java
@@ -57,7 +57,7 @@ import org.eclipse.jetty.websocket.core.server.WebSocketUpgradeHandler;
* $ ls target/reports/servers/
*
*/
-public class AutobahnWebSocketServer
+public class CoreAutobahnServer
{
public static void main(String[] args) throws Exception
{
diff --git a/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeResponse.java b/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeResponse.java
index 15ac69ba78e..af915587669 100644
--- a/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeResponse.java
+++ b/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeResponse.java
@@ -176,7 +176,7 @@ public class ServletUpgradeResponse
if (matches < 1)
throw new IllegalArgumentException("Extension not a requested extension");
- matches = negotiation.getNegotiatedExtensions().stream().filter(e -> e.getName().equals(config.getName())).count();
+ matches = configs.stream().filter(e -> e.getName().equals(config.getName())).count();
if (matches > 1)
throw new IllegalArgumentException("Multiple extensions of the same name");
}
From 64a916e6eca54c1006079c194210bbe818a0c1a5 Mon Sep 17 00:00:00 2001
From: Joakim Erdfelt
Date: Thu, 7 Nov 2019 05:11:48 -0600
Subject: [PATCH 28/34] Issue #4173 - use JarFileResource's Jar java.io.File
object if present
Signed-off-by: Joakim Erdfelt
---
.../org/eclipse/jetty/util/resource/JarFileResource.java | 3 +--
.../java/org/eclipse/jetty/webapp/WebInfConfiguration.java | 6 ++++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
index eea92e9f19d..0e8b7c42d27 100644
--- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java
@@ -405,8 +405,7 @@ public class JarFileResource extends JarResource
return url.sameFile(resource.getURI().toURL());
}
- @Override
- public File getFile()
+ public File getJarFile()
{
if (_file != null)
return _file;
diff --git a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
index 08fcccbe4dc..0d3205f5fed 100644
--- a/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
+++ b/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java
@@ -42,6 +42,7 @@ import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.resource.JarFileResource;
import org.eclipse.jetty.util.resource.JarResource;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.util.resource.ResourceCollection;
@@ -814,6 +815,11 @@ public class WebInfConfiguration extends AbstractConfiguration
try
{
File resourceFile = resource.getFile();
+ if ((resourceFile != null) && (resource instanceof JarFileResource))
+ {
+ resourceFile = ((JarFileResource)resource).getJarFile();
+ }
+
if (resourceFile != null)
{
return resourceFile.getName();
From c8e09a1026f60f88f9b324d92c378d0b661411d2 Mon Sep 17 00:00:00 2001
From: Greg Wilkins
Date: Fri, 8 Nov 2019 07:13:51 +1100
Subject: [PATCH 29/34] Issue #4284 NPE guard on exception
Signed-off-by: Greg Wilkins
---
jetty-start/src/main/java/org/eclipse/jetty/start/Main.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
index 5e4a86b8a19..18bee82f722 100644
--- a/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
+++ b/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java
@@ -603,11 +603,11 @@ public class Main
}
catch (ConnectException e)
{
- usageExit(e, ERR_NOT_STOPPED, jsvcStartArgs.isTestingModeEnabled());
+ usageExit(e, ERR_NOT_STOPPED, jsvcStartArgs != null && jsvcStartArgs.isTestingModeEnabled());
}
catch (Exception e)
{
- usageExit(e, ERR_UNKNOWN, jsvcStartArgs.isTestingModeEnabled());
+ usageExit(e, ERR_UNKNOWN, jsvcStartArgs != null && jsvcStartArgs.isTestingModeEnabled());
}
}
From b119a8f59f064877cb54cc11efe8e9320431994b Mon Sep 17 00:00:00 2001
From: Simone Bordet
Date: Thu, 7 Nov 2019 22:24:08 +0100
Subject: [PATCH 30/34] Fixed tests that were trying to connecting to 0.0.0.1.
On new Linux kernels, at least, trying to connect to 0.0.0.1 hangs, while
before it was failing immediately. The tests have now a short connect timeout
to avoid to hang.
Signed-off-by: Simone Bordet
---
.../jetty/http/client/HttpClientStreamTest.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java
index d413a29972f..f56e260a255 100644
--- a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java
+++ b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java
@@ -988,7 +988,9 @@ public class HttpClientStreamTest extends AbstractTest
public void testUploadWithOutputStreamFailureToConnect(Transport transport) throws Exception
{
init(transport);
- scenario.start(new EmptyServerHandler());
+
+ long connectTimeout = 1000;
+ scenario.start(new EmptyServerHandler(), httpClient -> httpClient.setConnectTimeout(connectTimeout));
final byte[] data = new byte[512];
final CountDownLatch latch = new CountDownLatch(1);
@@ -1013,7 +1015,7 @@ public class HttpClientStreamTest extends AbstractTest
}
});
- assertTrue(latch.await(5, TimeUnit.SECONDS));
+ assertTrue(latch.await(2 * connectTimeout, TimeUnit.SECONDS));
}
@ParameterizedTest
@@ -1070,7 +1072,9 @@ public class HttpClientStreamTest extends AbstractTest
public void testUploadWithConnectFailureClosesStream(Transport transport) throws Exception
{
init(transport);
- scenario.start(new EmptyServerHandler());
+
+ long connectTimeout = 1000;
+ scenario.start(new EmptyServerHandler(), httpClient -> httpClient.setConnectTimeout(connectTimeout));
final CountDownLatch closeLatch = new CountDownLatch(1);
InputStream stream = new ByteArrayInputStream("test".getBytes(StandardCharsets.UTF_8))
@@ -1097,7 +1101,7 @@ public class HttpClientStreamTest extends AbstractTest
completeLatch.countDown();
});
- assertTrue(completeLatch.await(5, TimeUnit.SECONDS));
+ assertTrue(completeLatch.await(2 * connectTimeout, TimeUnit.SECONDS));
assertTrue(closeLatch.await(5, TimeUnit.SECONDS));
}
From e37524c8a75de04839d28f9a4c72ea46a171cb88 Mon Sep 17 00:00:00 2001
From: Simone Bordet
Date: Fri, 8 Nov 2019 08:54:49 +0100
Subject: [PATCH 31/34] Code cleanup.
Signed-off-by: Simone Bordet
---
.../eclipse/jetty/http/HttpParserTest.java | 700 +++++++++---------
1 file changed, 349 insertions(+), 351 deletions(-)
diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
index 3a90155b8a9..b6244fa6143 100644
--- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
+++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java
@@ -42,6 +42,7 @@ import static org.hamcrest.Matchers.nullValue;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class HttpParserTest
@@ -97,7 +98,7 @@ public class HttpParserTest
}
@Test
- public void testLineParseMockIP() throws Exception
+ public void testLineParseMockIP()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /mock/127.0.0.1 HTTP/1.1\r\n" + "\r\n");
@@ -111,7 +112,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse0() throws Exception
+ public void testLineParse0()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /foo HTTP/1.0\r\n" + "\r\n");
@@ -125,7 +126,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse1RFC2616() throws Exception
+ public void testLineParse1RFC2616()
{
ByteBuffer buffer = BufferUtil.toBuffer("GET /999\r\n");
@@ -142,7 +143,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse1() throws Exception
+ public void testLineParse1()
{
ByteBuffer buffer = BufferUtil.toBuffer("GET /999\r\n");
@@ -154,7 +155,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse2RFC2616() throws Exception
+ public void testLineParse2RFC2616()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /222 \r\n");
@@ -171,7 +172,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse2() throws Exception
+ public void testLineParse2()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /222 \r\n");
@@ -184,7 +185,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse3() throws Exception
+ public void testLineParse3()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /fo\u0690 HTTP/1.0\r\n" + "\r\n", StandardCharsets.UTF_8);
@@ -198,7 +199,7 @@ public class HttpParserTest
}
@Test
- public void testLineParse4() throws Exception
+ public void testLineParse4()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /foo?param=\u0690 HTTP/1.0\r\n" + "\r\n", StandardCharsets.UTF_8);
@@ -212,7 +213,7 @@ public class HttpParserTest
}
@Test
- public void testLongURLParse() throws Exception
+ public void testLongURLParse()
{
ByteBuffer buffer = BufferUtil.toBuffer("POST /123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/ HTTP/1.0\r\n" + "\r\n");
@@ -226,7 +227,7 @@ public class HttpParserTest
}
@Test
- public void testAllowedLinePreamble() throws Exception
+ public void testAllowedLinePreamble()
{
ByteBuffer buffer = BufferUtil.toBuffer("\r\n\r\nGET / HTTP/1.0\r\n");
@@ -240,7 +241,7 @@ public class HttpParserTest
}
@Test
- public void testDisallowedLinePreamble() throws Exception
+ public void testDisallowedLinePreamble()
{
ByteBuffer buffer = BufferUtil.toBuffer("\r\n \r\nGET / HTTP/1.0\r\n");
@@ -251,7 +252,7 @@ public class HttpParserTest
}
@Test
- public void testConnect() throws Exception
+ public void testConnect()
{
ByteBuffer buffer = BufferUtil.toBuffer("CONNECT 192.168.1.2:80 HTTP/1.1\r\n" + "\r\n");
HttpParser.RequestHandler handler = new Handler();
@@ -264,7 +265,7 @@ public class HttpParserTest
}
@Test
- public void testSimple() throws Exception
+ public void testSimple()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -289,7 +290,7 @@ public class HttpParserTest
}
@Test
- public void testFoldedField2616() throws Exception
+ public void testFoldedField2616()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -316,7 +317,7 @@ public class HttpParserTest
}
@Test
- public void testFoldedField7230() throws Exception
+ public void testFoldedField7230()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -335,7 +336,7 @@ public class HttpParserTest
}
@Test
- public void testWhiteSpaceInName() throws Exception
+ public void testWhiteSpaceInName()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -352,7 +353,7 @@ public class HttpParserTest
}
@Test
- public void testWhiteSpaceAfterName() throws Exception
+ public void testWhiteSpaceAfterName()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -393,10 +394,8 @@ public class HttpParserTest
{" \r \t \r\n\r\n\r\n", "Illegal character SPACE"}
};
- for (int i = 0; i < compliances.length; i++)
+ for (HttpCompliance compliance : compliances)
{
- HttpCompliance compliance = compliances[i];
-
for (int j = 0; j < whitespaces.length; j++)
{
String request =
@@ -424,7 +423,7 @@ public class HttpParserTest
}
@Test
- public void testNoValue() throws Exception
+ public void testNoValue()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -452,7 +451,7 @@ public class HttpParserTest
}
@Test
- public void testSpaceinNameCustom0() throws Exception
+ public void testSpaceinNameCustom0()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -470,7 +469,7 @@ public class HttpParserTest
}
@Test
- public void testNoColonCustom0() throws Exception
+ public void testNoColonCustom0()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -488,7 +487,7 @@ public class HttpParserTest
}
@Test
- public void testTrailingSpacesInHeaderNameInCustom0Mode() throws Exception
+ public void testTrailingSpacesInHeaderNameInCustom0Mode()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 204 No Content\r\n" +
@@ -506,7 +505,7 @@ public class HttpParserTest
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("204", _uriOrStatus);
assertEquals("No Content", _versionOrReason);
- assertEquals(null, _content);
+ assertNull(_content);
assertEquals(1, _headers);
System.out.println(Arrays.asList(_hdr));
@@ -520,7 +519,7 @@ public class HttpParserTest
}
@Test
- public void testTrailingSpacesInHeaderNameNoCustom0() throws Exception
+ public void testTrailingSpacesInHeaderNameNoCustom0()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 204 No Content\r\n" +
@@ -539,7 +538,7 @@ public class HttpParserTest
}
@Test
- public void testNoColon7230() throws Exception
+ public void testNoColon7230()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -555,7 +554,7 @@ public class HttpParserTest
}
@Test
- public void testHeaderParseDirect() throws Exception
+ public void testHeaderParseDirect()
{
ByteBuffer b0 = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -606,7 +605,7 @@ public class HttpParserTest
}
@Test
- public void testHeaderParseCRLF() throws Exception
+ public void testHeaderParseCRLF()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
@@ -652,7 +651,7 @@ public class HttpParserTest
}
@Test
- public void testHeaderParseLF() throws Exception
+ public void testHeaderParseLF()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\n" +
@@ -698,7 +697,7 @@ public class HttpParserTest
}
@Test
- public void testQuoted() throws Exception
+ public void testQuoted()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\n" +
@@ -723,7 +722,7 @@ public class HttpParserTest
}
@Test
- public void testEncodedHeader() throws Exception
+ public void testEncodedHeader()
{
ByteBuffer buffer = BufferUtil.allocate(4096);
BufferUtil.flipToFill(buffer);
@@ -749,11 +748,11 @@ public class HttpParserTest
assertEquals("Header2", _hdr[1]);
assertEquals("" + (char)255, _val[1]);
assertEquals(1, _headers);
- assertEquals(null, _bad);
+ assertNull(_bad);
}
@Test
- public void testResponseBufferUpgradeFrom() throws Exception
+ public void testResponseBufferUpgradeFrom()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 101 Upgrade\r\n" +
@@ -775,7 +774,7 @@ public class HttpParserTest
}
@Test
- public void testBadMethodEncoding() throws Exception
+ public void testBadMethodEncoding()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"G\u00e6T / HTTP/1.0\r\nHeader0: value0\r\n\n\n");
@@ -787,7 +786,7 @@ public class HttpParserTest
}
@Test
- public void testBadVersionEncoding() throws Exception
+ public void testBadVersionEncoding()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / H\u00e6P/1.0\r\nHeader0: value0\r\n\n\n");
@@ -799,12 +798,12 @@ public class HttpParserTest
}
@Test
- public void testBadHeaderEncoding() throws Exception
+ public void testBadHeaderEncoding()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
- "H\u00e6der0: value0\r\n" +
- "\n\n");
+ "H\u00e6der0: value0\r\n" +
+ "\n\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -813,7 +812,7 @@ public class HttpParserTest
}
@Test // TODO: Parameterize Test
- public void testBadHeaderNames() throws Exception
+ public void testBadHeaderNames()
{
String[] bad = new String[]
{
@@ -832,22 +831,22 @@ public class HttpParserTest
"Foo/Bar: value\r\n",
"Foo]Bar: value\r\n",
"Foo[Bar: value\r\n",
- };
+ };
- for (int i = 0; i < bad.length; i++)
+ for (String s : bad)
{
ByteBuffer buffer = BufferUtil.toBuffer(
- "GET / HTTP/1.0\r\n" + bad[i] + "\r\n");
+ "GET / HTTP/1.0\r\n" + s + "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
- assertThat(bad[i], _bad, Matchers.notNullValue());
+ assertThat(s, _bad, Matchers.notNullValue());
}
}
@Test
- public void testHeaderTab() throws Exception
+ public void testHeaderTab()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
@@ -869,7 +868,7 @@ public class HttpParserTest
}
@Test
- public void testCaseSensitiveMethod() throws Exception
+ public void testCaseSensitiveMethod()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"gEt / http/1.0\r\n" +
@@ -885,7 +884,7 @@ public class HttpParserTest
}
@Test
- public void testCaseSensitiveMethodLegacy() throws Exception
+ public void testCaseSensitiveMethodLegacy()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"gEt / http/1.0\r\n" +
@@ -901,7 +900,7 @@ public class HttpParserTest
}
@Test
- public void testCaseInsensitiveHeader() throws Exception
+ public void testCaseInsensitiveHeader()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / http/1.0\r\n" +
@@ -924,7 +923,7 @@ public class HttpParserTest
}
@Test
- public void testCaseInSensitiveHeaderLegacy() throws Exception
+ public void testCaseInSensitiveHeaderLegacy()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / http/1.0\r\n" +
@@ -947,7 +946,7 @@ public class HttpParserTest
}
@Test
- public void testSplitHeaderParse() throws Exception
+ public void testSplitHeaderParse()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"XXXXSPLIT / HTTP/1.0\r\n" +
@@ -1000,19 +999,19 @@ public class HttpParserTest
}
@Test
- public void testChunkParse() throws Exception
+ public void testChunkParse()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
- "\r\n");
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1030,19 +1029,19 @@ public class HttpParserTest
}
@Test
- public void testBadChunkParse() throws Exception
+ public void testBadChunkParse()
{
ByteBuffer buffer = BufferUtil.toBuffer(
- "GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked, identity\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
- "\r\n");
+ "GET /chunk HTTP/1.0\r\n" +
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked, identity\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1054,20 +1053,20 @@ public class HttpParserTest
}
@Test
- public void testChunkParseTrailer() throws Exception
+ public void testChunkParseTrailer()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
- "Trailer: value\r\n" +
- "\r\n");
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
+ "Trailer: value\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1089,20 +1088,20 @@ public class HttpParserTest
}
@Test
- public void testChunkParseTrailers() throws Exception
+ public void testChunkParseTrailers()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
- "Trailer: value\r\n" +
- "Foo: bar\r\n" +
- "\r\n");
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
+ "Trailer: value\r\n" +
+ "Foo: bar\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1127,19 +1126,19 @@ public class HttpParserTest
}
@Test
- public void testChunkParseBadTrailer() throws Exception
+ public void testChunkParseBadTrailer()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
- "Trailer: value");
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
+ "Trailer: value");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1159,18 +1158,18 @@ public class HttpParserTest
}
@Test
- public void testChunkParseNoTrailer() throws Exception
+ public void testChunkParseNoTrailer()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n");
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parseAll(parser, buffer);
@@ -1190,7 +1189,7 @@ public class HttpParserTest
}
@Test
- public void testStartEOF() throws Exception
+ public void testStartEOF()
{
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1198,17 +1197,17 @@ public class HttpParserTest
parser.parseNext(BufferUtil.EMPTY_BUFFER);
assertTrue(_early);
- assertEquals(null, _bad);
+ assertNull(_bad);
}
@Test
- public void testEarlyEOF() throws Exception
+ public void testEarlyEOF()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /uri HTTP/1.0\r\n" +
- "Content-Length: 20\r\n" +
- "\r\n" +
- "0123456789");
+ "Content-Length: 20\r\n" +
+ "\r\n" +
+ "0123456789");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.atEOF();
@@ -1223,15 +1222,15 @@ public class HttpParserTest
}
@Test
- public void testChunkEarlyEOF() throws Exception
+ public void testChunkEarlyEOF()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /chunk HTTP/1.0\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n");
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.atEOF();
@@ -1249,34 +1248,34 @@ public class HttpParserTest
}
@Test
- public void testMultiParse() throws Exception
+ public void testMultiParse()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET /mp HTTP/1.0\r\n" +
- "Connection: Keep-Alive\r\n" +
- "Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
+ "Connection: Keep-Alive\r\n" +
+ "Header1: value1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
- "\r\n" +
+ "\r\n" +
- "POST /foo HTTP/1.0\r\n" +
- "Connection: Keep-Alive\r\n" +
- "Header2: value2\r\n" +
- "Content-Length: 0\r\n" +
- "\r\n" +
+ "POST /foo HTTP/1.0\r\n" +
+ "Connection: Keep-Alive\r\n" +
+ "Header2: value2\r\n" +
+ "Content-Length: 0\r\n" +
+ "\r\n" +
- "PUT /doodle HTTP/1.0\r\n" +
- "Connection: close\r\n" +
- "Header3: value3\r\n" +
- "Content-Length: 10\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "PUT /doodle HTTP/1.0\r\n" +
+ "Connection: close\r\n" +
+ "Header3: value3\r\n" +
+ "Content-Length: 10\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1298,7 +1297,7 @@ public class HttpParserTest
assertEquals(2, _headers);
assertEquals("Header2", _hdr[1]);
assertEquals("value2", _val[1]);
- assertEquals(null, _content);
+ assertNull(_content);
parser.reset();
init();
@@ -1314,34 +1313,34 @@ public class HttpParserTest
}
@Test
- public void testMultiParseEarlyEOF() throws Exception
+ public void testMultiParseEarlyEOF()
{
ByteBuffer buffer0 = BufferUtil.toBuffer(
"GET /mp HTTP/1.0\r\n" +
- "Connection: Keep-Alive\r\n");
+ "Connection: Keep-Alive\r\n");
ByteBuffer buffer1 = BufferUtil.toBuffer("Header1: value1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "a;\r\n" +
- "0123456789\r\n" +
- "1a\r\n" +
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
- "0\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "a;\r\n" +
+ "0123456789\r\n" +
+ "1a\r\n" +
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n" +
+ "0\r\n" +
- "\r\n" +
+ "\r\n" +
- "POST /foo HTTP/1.0\r\n" +
- "Connection: Keep-Alive\r\n" +
- "Header2: value2\r\n" +
- "Content-Length: 0\r\n" +
- "\r\n" +
+ "POST /foo HTTP/1.0\r\n" +
+ "Connection: Keep-Alive\r\n" +
+ "Header2: value2\r\n" +
+ "Content-Length: 0\r\n" +
+ "\r\n" +
- "PUT /doodle HTTP/1.0\r\n" +
- "Connection: close\r\n" + "Header3: value3\r\n" +
- "Content-Length: 10\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "PUT /doodle HTTP/1.0\r\n" +
+ "Connection: close\r\n" + "Header3: value3\r\n" +
+ "Content-Length: 10\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1365,7 +1364,7 @@ public class HttpParserTest
assertEquals(2, _headers);
assertEquals("Header2", _hdr[1]);
assertEquals("value2", _val[1]);
- assertEquals(null, _content);
+ assertNull(_content);
parser.reset();
init();
@@ -1380,14 +1379,14 @@ public class HttpParserTest
}
@Test
- public void testResponseParse0() throws Exception
+ public void testResponseParse0()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 200 Correct\r\n" +
- "Content-Length: 10\r\n" +
- "Content-Type: text/plain\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "Content-Length: 10\r\n" +
+ "Content-Type: text/plain\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1401,12 +1400,12 @@ public class HttpParserTest
}
@Test
- public void testResponseParse1() throws Exception
+ public void testResponseParse1()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 304 Not-Modified\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1419,18 +1418,18 @@ public class HttpParserTest
}
@Test
- public void testResponseParse2() throws Exception
+ public void testResponseParse2()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 204 No-Content\r\n" +
- "Header: value\r\n" +
- "\r\n" +
+ "Header: value\r\n" +
+ "\r\n" +
- "HTTP/1.1 200 Correct\r\n" +
- "Content-Length: 10\r\n" +
- "Content-Type: text/plain\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "HTTP/1.1 200 Correct\r\n" +
+ "Content-Length: 10\r\n" +
+ "Content-Type: text/plain\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1455,55 +1454,55 @@ public class HttpParserTest
}
@Test
- public void testResponseParse3() throws Exception
+ public void testResponseParse3()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 200\r\n" +
- "Content-Length: 10\r\n" +
- "Content-Type: text/plain\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "Content-Length: 10\r\n" +
+ "Content-Type: text/plain\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("200", _uriOrStatus);
- assertEquals(null, _versionOrReason);
+ assertNull(_versionOrReason);
assertEquals(_content.length(), 10);
assertTrue(_headerCompleted);
assertTrue(_messageCompleted);
}
@Test
- public void testResponseParse4() throws Exception
+ public void testResponseParse4()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 200 \r\n" +
- "Content-Length: 10\r\n" +
- "Content-Type: text/plain\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "Content-Length: 10\r\n" +
+ "Content-Type: text/plain\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("200", _uriOrStatus);
- assertEquals(null, _versionOrReason);
+ assertNull(_versionOrReason);
assertEquals(_content.length(), 10);
assertTrue(_headerCompleted);
assertTrue(_messageCompleted);
}
@Test
- public void testResponseEOFContent() throws Exception
+ public void testResponseEOFContent()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 200 \r\n" +
- "Content-Type: text/plain\r\n" +
- "\r\n" +
- "0123456789\r\n");
+ "Content-Type: text/plain\r\n" +
+ "\r\n" +
+ "0123456789\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1512,7 +1511,7 @@ public class HttpParserTest
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("200", _uriOrStatus);
- assertEquals(null, _versionOrReason);
+ assertNull(_versionOrReason);
assertEquals(12, _content.length());
assertEquals("0123456789\r\n", _content);
assertTrue(_headerCompleted);
@@ -1520,12 +1519,12 @@ public class HttpParserTest
}
@Test
- public void testResponse304WithContentLength() throws Exception
+ public void testResponse304WithContentLength()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 304 found\r\n" +
- "Content-Length: 10\r\n" +
- "\r\n");
+ "Content-Length: 10\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1533,18 +1532,18 @@ public class HttpParserTest
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("304", _uriOrStatus);
assertEquals("found", _versionOrReason);
- assertEquals(null, _content);
+ assertNull(_content);
assertTrue(_headerCompleted);
assertTrue(_messageCompleted);
}
@Test
- public void testResponse101WithTransferEncoding() throws Exception
+ public void testResponse101WithTransferEncoding()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 101 switching protocols\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n");
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1552,18 +1551,18 @@ public class HttpParserTest
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("101", _uriOrStatus);
assertEquals("switching protocols", _versionOrReason);
- assertEquals(null, _content);
+ assertNull(_content);
assertTrue(_headerCompleted);
assertTrue(_messageCompleted);
}
@Test
- public void testResponseReasonIso8859_1() throws Exception
+ public void testResponseReasonIso8859_1()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 302 déplacé temporairement\r\n" +
- "Content-Length: 0\r\n" +
- "\r\n", StandardCharsets.ISO_8859_1);
+ "Content-Length: 0\r\n" +
+ "\r\n", StandardCharsets.ISO_8859_1);
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1574,15 +1573,15 @@ public class HttpParserTest
}
@Test
- public void testSeekEOF() throws Exception
+ public void testSeekEOF()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 200 OK\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n" +
- "\r\n" + // extra CRLF ignored
- "HTTP/1.1 400 OK\r\n"); // extra data causes close ??
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n" +
+ "\r\n" + // extra CRLF ignored
+ "HTTP/1.1 400 OK\r\n"); // extra data causes close ??
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1591,7 +1590,7 @@ public class HttpParserTest
assertEquals("HTTP/1.1", _methodOrVersion);
assertEquals("200", _uriOrStatus);
assertEquals("OK", _versionOrReason);
- assertEquals(null, _content);
+ assertNull(_content);
assertTrue(_headerCompleted);
assertTrue(_messageCompleted);
@@ -1606,19 +1605,19 @@ public class HttpParserTest
}
@Test
- public void testNoURI() throws Exception
+ public void testNoURI()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("No URI", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1628,19 +1627,19 @@ public class HttpParserTest
}
@Test
- public void testNoURI2() throws Exception
+ public void testNoURI2()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET \r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("No URI", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1650,19 +1649,19 @@ public class HttpParserTest
}
@Test
- public void testUnknownReponseVersion() throws Exception
+ public void testUnknownReponseVersion()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HPPT/7.7 200 OK\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("Unknown Version", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1672,19 +1671,19 @@ public class HttpParserTest
}
@Test
- public void testNoStatus() throws Exception
+ public void testNoStatus()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("No Status", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1694,19 +1693,19 @@ public class HttpParserTest
}
@Test
- public void testNoStatus2() throws Exception
+ public void testNoStatus2()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"HTTP/1.1 \r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.ResponseHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("No Status", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1716,19 +1715,19 @@ public class HttpParserTest
}
@Test
- public void testBadRequestVersion() throws Exception
+ public void testBadRequestVersion()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HPPT/7.7\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("Unknown Version", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1738,15 +1737,15 @@ public class HttpParserTest
buffer = BufferUtil.toBuffer(
"GET / HTTP/1.01\r\n" +
- "Content-Length: 0\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 0\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
handler = new Handler();
parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _methodOrVersion);
+ assertNull(_methodOrVersion);
assertEquals("Unknown Version", _bad);
assertFalse(buffer.hasRemaining());
assertEquals(HttpParser.State.CLOSE, parser.getState());
@@ -1756,13 +1755,13 @@ public class HttpParserTest
}
@Test
- public void testBadCR() throws Exception
+ public void testBadCR()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
- "Content-Length: 0\r" +
- "Connection: close\r" +
- "\r");
+ "Content-Length: 0\r" +
+ "Connection: close\r" +
+ "\r");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1777,9 +1776,9 @@ public class HttpParserTest
buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r" +
- "Content-Length: 0\r" +
- "Connection: close\r" +
- "\r");
+ "Content-Length: 0\r" +
+ "Connection: close\r" +
+ "\r");
handler = new Handler();
parser = new HttpParser(handler);
@@ -1794,13 +1793,13 @@ public class HttpParserTest
}
@Test
- public void testBadContentLength0() throws Exception
+ public void testBadContentLength0()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
- "Content-Length: abc\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: abc\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1816,13 +1815,13 @@ public class HttpParserTest
}
@Test
- public void testBadContentLength1() throws Exception
+ public void testBadContentLength1()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
- "Content-Length: 9999999999999999999999999999999999999999999999\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 9999999999999999999999999999999999999999999999\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1838,13 +1837,13 @@ public class HttpParserTest
}
@Test
- public void testBadContentLength2() throws Exception
+ public void testBadContentLength2()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.0\r\n" +
- "Content-Length: 1.5\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Content-Length: 1.5\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1864,11 +1863,11 @@ public class HttpParserTest
{
ByteBuffer buffer = BufferUtil.toBuffer(
"POST / HTTP/1.1\r\n" +
- "Content-Length: 2\r\n" +
- "Content-Length: 1\r\n" +
- "Connection: close\r\n" +
- "\r\n" +
- "X");
+ "Content-Length: 2\r\n" +
+ "Content-Length: 1\r\n" +
+ "Connection: close\r\n" +
+ "\r\n" +
+ "X");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1888,11 +1887,11 @@ public class HttpParserTest
{
ByteBuffer buffer = BufferUtil.toBuffer(
"POST / HTTP/1.1\r\n" +
- "Content-Length: 1\r\n" +
- "Content-Length: 2\r\n" +
- "Connection: close\r\n" +
- "\r\n" +
- "X");
+ "Content-Length: 1\r\n" +
+ "Content-Length: 2\r\n" +
+ "Connection: close\r\n" +
+ "\r\n" +
+ "X");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1912,14 +1911,14 @@ public class HttpParserTest
{
ByteBuffer buffer = BufferUtil.toBuffer(
"POST /chunk HTTP/1.1\r\n" +
- "Host: localhost\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "Content-Length: 1\r\n" +
- "\r\n" +
- "1\r\n" +
- "X\r\n" +
- "0\r\n" +
- "\r\n");
+ "Host: localhost\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "Content-Length: 1\r\n" +
+ "\r\n" +
+ "1\r\n" +
+ "X\r\n" +
+ "0\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler, HttpCompliance.RFC2616_LEGACY);
@@ -1941,15 +1940,14 @@ public class HttpParserTest
{
ByteBuffer buffer = BufferUtil.toBuffer(
"POST /chunk HTTP/1.1\r\n" +
- "Host: localhost\r\n" +
- "Content-Length: 1\r\n" +
- "Transfer-Encoding: chunked\r\n" +
- "\r\n" +
- "1\r\n" +
- "X\r\n" +
- "0\r\n" +
- "\r\n");
-
+ "Host: localhost\r\n" +
+ "Content-Length: 1\r\n" +
+ "Transfer-Encoding: chunked\r\n" +
+ "\r\n" +
+ "1\r\n" +
+ "X\r\n" +
+ "0\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler, HttpCompliance.RFC2616_LEGACY);
@@ -1967,13 +1965,13 @@ public class HttpParserTest
}
@Test
- public void testHost() throws Exception
+ public void testHost()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: host\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: host\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1983,12 +1981,12 @@ public class HttpParserTest
}
@Test
- public void testUriHost11() throws Exception
+ public void testUriHost11()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET http://host/ HTTP/1.1\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -1999,11 +1997,11 @@ public class HttpParserTest
}
@Test
- public void testUriHost10() throws Exception
+ public void testUriHost10()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET http://host/ HTTP/1.0\r\n" +
- "\r\n");
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2014,12 +2012,12 @@ public class HttpParserTest
}
@Test
- public void testNoHost() throws Exception
+ public void testNoHost()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2028,13 +2026,13 @@ public class HttpParserTest
}
@Test
- public void testIPHost() throws Exception
+ public void testIPHost()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: 192.168.0.1\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: 192.168.0.1\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2044,14 +2042,14 @@ public class HttpParserTest
}
@Test
- public void testIPv6Host() throws Exception
+ public void testIPv6Host()
{
Assumptions.assumeTrue(Net.isIpv6InterfaceAvailable());
ByteBuffer buffer = BufferUtil.toBuffer(
- "GET / HTTP/1.1\r\n" +
- "Host: [::1]\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "GET / HTTP/1.1\r\n" +
+ "Host: [::1]\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2061,15 +2059,15 @@ public class HttpParserTest
}
@Test
- public void testBadIPv6Host() throws Exception
+ public void testBadIPv6Host()
{
try (StacklessLogging s = new StacklessLogging(HttpParser.class))
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: [::1\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: [::1\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2079,13 +2077,13 @@ public class HttpParserTest
}
@Test
- public void testHostPort() throws Exception
+ public void testHostPort()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: myhost:8888\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: myhost:8888\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2095,13 +2093,13 @@ public class HttpParserTest
}
@Test
- public void testHostBadPort() throws Exception
+ public void testHostBadPort()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: myhost:testBadPort\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: myhost:testBadPort\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2110,13 +2108,13 @@ public class HttpParserTest
}
@Test
- public void testIPHostPort() throws Exception
+ public void testIPHostPort()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: 192.168.0.1:8888\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: 192.168.0.1:8888\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2126,14 +2124,14 @@ public class HttpParserTest
}
@Test
- public void testIPv6HostPort() throws Exception
+ public void testIPv6HostPort()
{
Assumptions.assumeTrue(Net.isIpv6InterfaceAvailable());
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host: [::1]:8888\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host: [::1]:8888\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
@@ -2143,24 +2141,24 @@ public class HttpParserTest
}
@Test
- public void testEmptyHostPort() throws Exception
+ public void testEmptyHostPort()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
- "Host:\r\n" +
- "Connection: close\r\n" +
- "\r\n");
+ "Host:\r\n" +
+ "Connection: close\r\n" +
+ "\r\n");
HttpParser.RequestHandler handler = new Handler();
HttpParser parser = new HttpParser(handler);
parser.parseNext(buffer);
- assertEquals(null, _host);
- assertEquals(null, _bad);
+ assertNull(_host);
+ assertNull(_bad);
}
@Test
@SuppressWarnings("ReferenceEquality")
- public void testCachedField() throws Exception
+ public void testCachedField()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
@@ -2175,11 +2173,11 @@ public class HttpParserTest
buffer.position(0);
parseAll(parser, buffer);
- assertTrue(field == _fields.get(0));
+ assertSame(field, _fields.get(0));
}
@Test
- public void testParseRequest() throws Exception
+ public void testParseRequest()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"GET / HTTP/1.1\r\n" +
@@ -2208,7 +2206,7 @@ public class HttpParserTest
}
@Test
- public void testHTTP2Preface() throws Exception
+ public void testHTTP2Preface()
{
ByteBuffer buffer = BufferUtil.toBuffer(
"PRI * HTTP/2.0\r\n" +
@@ -2226,7 +2224,7 @@ public class HttpParserTest
assertEquals("*", _uriOrStatus);
assertEquals("HTTP/2.0", _versionOrReason);
assertEquals(-1, _headers);
- assertEquals(null, _bad);
+ assertNull(_bad);
}
@BeforeEach
From 1d8a2fe03a7fca6d9b5bcc99f2743851981a40e3 Mon Sep 17 00:00:00 2001
From: Simone Bordet
Date: Fri, 8 Nov 2019 09:56:36 +0100
Subject: [PATCH 32/34] Code cleanup.
Signed-off-by: Simone Bordet
---
.../org/eclipse/jetty/http/HttpParser.java | 22 ++++++++-----------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
index 4435610086b..e5b09b69714 100644
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
@@ -237,7 +237,7 @@ public class HttpParser
private static HttpCompliance compliance()
{
- Boolean strict = Boolean.getBoolean(__STRICT);
+ boolean strict = Boolean.getBoolean(__STRICT);
if (strict)
{
LOG.warn("Deprecated property used: " + __STRICT);
@@ -564,9 +564,8 @@ public class HttpParser
{
boolean handleHeader = _handler.headerComplete();
_headerComplete = true;
- boolean handleContent = _handler.contentComplete();
- boolean handleMessage = _handler.messageComplete();
- return handleHeader || handleContent || handleMessage;
+ boolean handleContentMessage = handleContentMessage();
+ return handleHeader || handleContentMessage;
}
private boolean handleContentMessage()
@@ -744,7 +743,7 @@ public class HttpParser
case LF:
setState(State.HEADER);
- handle |= _responseHandler.startResponse(_version, _responseStatus, null);
+ handle = _responseHandler.startResponse(_version, _responseStatus, null);
break;
default:
@@ -842,7 +841,7 @@ public class HttpParser
if (_responseHandler != null)
{
setState(State.HEADER);
- handle |= _responseHandler.startResponse(_version, _responseStatus, null);
+ handle = _responseHandler.startResponse(_version, _responseStatus, null);
}
else
{
@@ -874,15 +873,13 @@ public class HttpParser
checkVersion();
// Should we try to cache header fields?
- if (_fieldCache == null && _version.getVersion() >= HttpVersion.HTTP_1_1.getVersion() && _handler.getHeaderCacheSize() > 0)
- {
- int headerCache = _handler.getHeaderCacheSize();
+ int headerCache = _handler.getHeaderCacheSize();
+ if (_fieldCache == null && _version.getVersion() >= HttpVersion.HTTP_1_1.getVersion() && headerCache > 0)
_fieldCache = new ArrayTernaryTrie<>(headerCache);
- }
setState(State.HEADER);
- handle |= _requestHandler.startRequest(_methodString, _uri.toString(), _version);
+ handle = _requestHandler.startRequest(_methodString, _uri.toString(), _version);
continue;
case ALPHA:
@@ -904,7 +901,7 @@ public class HttpParser
case LF:
String reason = takeString();
setState(State.HEADER);
- handle |= _responseHandler.startResponse(_version, _responseStatus, reason);
+ handle = _responseHandler.startResponse(_version, _responseStatus, reason);
continue;
case ALPHA:
@@ -1628,7 +1625,6 @@ public class HttpParser
}
// Handle _content
- byte ch;
while (_state.ordinal() < State.TRAILER.ordinal() && remaining > 0)
{
switch (_state)
From 089dd479c7afde789b6aecdd6e237e34e15210f3 Mon Sep 17 00:00:00 2001
From: Lachlan Roberts
Date: Fri, 8 Nov 2019 21:06:51 +1100
Subject: [PATCH 33/34] add module-info lines to use ServiceLoader with
Authenticator.Factory
Signed-off-by: Lachlan Roberts
---
jetty-jaspi/src/main/java/module-info.java | 5 +++++
jetty-security/src/main/java/module-info.java | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/jetty-jaspi/src/main/java/module-info.java b/jetty-jaspi/src/main/java/module-info.java
index cc3333e34dd..703d93d261e 100644
--- a/jetty-jaspi/src/main/java/module-info.java
+++ b/jetty-jaspi/src/main/java/module-info.java
@@ -16,6 +16,9 @@
// ========================================================================
//
+import org.eclipse.jetty.security.Authenticator;
+import org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory;
+
module org.eclipse.jetty.security.jaspi
{
exports org.eclipse.jetty.security.jaspi;
@@ -28,4 +31,6 @@ module org.eclipse.jetty.security.jaspi
requires org.eclipse.jetty.security;
requires org.eclipse.jetty.server;
requires org.eclipse.jetty.util;
+
+ provides Authenticator.Factory with JaspiAuthenticatorFactory;
}
diff --git a/jetty-security/src/main/java/module-info.java b/jetty-security/src/main/java/module-info.java
index d5a8d543724..bf823d5ee4c 100644
--- a/jetty-security/src/main/java/module-info.java
+++ b/jetty-security/src/main/java/module-info.java
@@ -16,6 +16,8 @@
// ========================================================================
//
+import org.eclipse.jetty.security.Authenticator;
+
module org.eclipse.jetty.security
{
exports org.eclipse.jetty.security;
@@ -30,4 +32,6 @@ module org.eclipse.jetty.security
requires static java.sql;
// Only required if using SPNEGO.
requires static java.security.jgss;
+
+ uses Authenticator.Factory;
}
From d043cf6318b07cadfb2010c786e7c553c06814ad Mon Sep 17 00:00:00 2001
From: Chris Walker
Date: Fri, 8 Nov 2019 12:23:17 -0500
Subject: [PATCH 34/34] Fixed links for linking separate guides
---
jetty-documentation/pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml
index 16ece04c3ea..5a0e52c7510 100644
--- a/jetty-documentation/pom.xml
+++ b/jetty-documentation/pom.xml
@@ -100,8 +100,8 @@
https://github.com/eclipse/jetty.project/tree/jetty-10.0.x-doc-refactor/jetty-documentation/src/main/asciidoc
../distribution-guide/index.html
../embedded-guide/index.html
- ../quickstart-guideindex.html
- ../contribution-guideindex.html
+ ../quickstart-guide/index.html
+ ../contribution-guide/index.html
http://central.maven.org/maven2
${project.version}
${maven.build.timestamp}