This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push: new f81d0719c4 Align with 9.0.x f81d0719c4 is described below commit f81d0719c479e89df05346af5170dda30c4d07d9 Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Mar 8 19:15:28 2023 +0000 Align with 9.0.x --- .../websocket/AsyncChannelWrapperSecure.java | 1 + .../apache/tomcat/websocket/PerMessageDeflate.java | 6 +- .../tomcat/websocket/TestWsWebSocketContainer.java | 60 ----------------- .../websocket/TestWsWebSocketContainerSSL.java | 76 ++++++++++++++++++++++ .../tomcat/websocket/server/TestCloseBug58624.java | 2 +- .../websocket/server/TestWsServerContainer.java | 2 +- 6 files changed, 82 insertions(+), 65 deletions(-) diff --git a/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java b/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java index 085e05cbe0..6e6888494f 100644 --- a/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java +++ b/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java @@ -388,6 +388,7 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper { break; } case NOT_HANDSHAKING: { + // Don't expect to see this during a handshake throw new SSLException(sm.getString("asyncChannelWrapperSecure.notHandshaking")); } } diff --git a/java/org/apache/tomcat/websocket/PerMessageDeflate.java b/java/org/apache/tomcat/websocket/PerMessageDeflate.java index eaaf4b6c67..4bc97b8199 100644 --- a/java/org/apache/tomcat/websocket/PerMessageDeflate.java +++ b/java/org/apache/tomcat/websocket/PerMessageDeflate.java @@ -94,7 +94,7 @@ public class PerMessageDeflate implements Transformation { throw new IllegalArgumentException(sm.getString("perMessageDeflate.invalidWindowSize", SERVER_MAX_WINDOW_BITS, Integer.valueOf(serverMaxWindowBits))); } - // Java SE API (as of Java 8) does not expose the API to + // Java SE API (as of Java 11) does not expose the API to // control the Window size. It is effectively hard-coded // to 15 if (isServer && serverMaxWindowBits != 15) { @@ -114,7 +114,7 @@ public class PerMessageDeflate implements Transformation { if (clientMaxWindowBits == -1) { if (param.getValue() == null) { // Hint to server that the client supports this - // option. Java SE API (as of Java 8) does not + // option. Java SE API (as of Java 11) does not // expose the API to control the Window size. It is // effectively hard-coded to 15 clientMaxWindowBits = 15; @@ -125,7 +125,7 @@ public class PerMessageDeflate implements Transformation { CLIENT_MAX_WINDOW_BITS, Integer.valueOf(clientMaxWindowBits))); } } - // Java SE API (as of Java 8) does not expose the API to + // Java SE API (as of Java 11) does not expose the API to // control the Window size. It is effectively hard-coded // to 15 if (!isServer && clientMaxWindowBits != 15) { diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java index f14809fab4..1fab006848 100644 --- a/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java +++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainer.java @@ -16,13 +16,9 @@ */ package org.apache.tomcat.websocket; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.net.URI; import java.nio.ByteBuffer; -import java.security.KeyStore; import java.util.ArrayList; import java.util.List; import java.util.Queue; @@ -30,8 +26,6 @@ import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; import javax.servlet.ServletContextEvent; import javax.websocket.ClientEndpointConfig; import javax.websocket.ContainerProvider; @@ -52,7 +46,6 @@ import org.junit.Test; import org.apache.catalina.Context; import org.apache.catalina.servlets.DefaultServlet; import org.apache.catalina.startup.Tomcat; -import org.apache.tomcat.util.net.TesterSupport; import org.apache.tomcat.websocket.TesterMessageCountClient.BasicBinary; import org.apache.tomcat.websocket.TesterMessageCountClient.BasicHandler; import org.apache.tomcat.websocket.TesterMessageCountClient.BasicText; @@ -514,59 +507,6 @@ public class TestWsWebSocketContainer extends WsWebSocketContainerBaseTest { } - @Test - public void testConnectToServerEndpointSSL() throws Exception { - - Tomcat tomcat = getTomcatInstance(); - // No file system docBase required - Context ctx = tomcat.addContext("", null); - ctx.addApplicationListener(TesterEchoServer.Config.class.getName()); - Tomcat.addServlet(ctx, "default", new DefaultServlet()); - ctx.addServletMappingDecoded("/", "default"); - - TesterSupport.initSsl(tomcat); - - tomcat.start(); - - WebSocketContainer wsContainer = ContainerProvider.getWebSocketContainer(); - ClientEndpointConfig clientEndpointConfig = ClientEndpointConfig.Builder.create().build(); - - // Create the SSL Context - // Java 7 doesn't default to TLSv1.2 but the tests do - SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); - - // Trust store - File keyStoreFile = new File(TesterSupport.CA_JKS); - KeyStore ks = KeyStore.getInstance("JKS"); - try (InputStream is = new FileInputStream(keyStoreFile)) { - ks.load(is, org.apache.tomcat.websocket.Constants.SSL_TRUSTSTORE_PWD_DEFAULT.toCharArray()); - } - - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(ks); - - sslContext.init(null, tmf.getTrustManagers(), null); - - clientEndpointConfig.getUserProperties().put(org.apache.tomcat.websocket.Constants.SSL_CONTEXT_PROPERTY, - sslContext); - - Session wsSession = wsContainer.connectToServer(TesterProgrammaticEndpoint.class, clientEndpointConfig, - new URI("wss://" + getHostName() + ":" + getPort() + TesterEchoServer.Config.PATH_ASYNC)); - CountDownLatch latch = new CountDownLatch(1); - BasicText handler = new BasicText(latch); - wsSession.addMessageHandler(handler); - wsSession.getBasicRemote().sendText(MESSAGE_STRING_1); - - boolean latchResult = handler.getLatch().await(10, TimeUnit.SECONDS); - - Assert.assertTrue(latchResult); - - Queue<String> messages = handler.getMessages(); - Assert.assertEquals(1, messages.size()); - Assert.assertEquals(MESSAGE_STRING_1, messages.peek()); - } - - @Test public void testMaxMessageSize01() throws Exception { doMaxMessageSize(TesterEchoServer.Config.PATH_BASIC_LIMIT_LOW, TesterEchoServer.BasicLimitLow.MAX_SIZE - 1, diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java new file mode 100644 index 0000000000..eb44ac6aed --- /dev/null +++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.websocket; + +import java.net.URI; +import java.util.Queue; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import javax.websocket.ClientEndpointConfig; +import javax.websocket.ContainerProvider; +import javax.websocket.Session; +import javax.websocket.WebSocketContainer; + +import org.junit.Assert; +import org.junit.Test; + +import org.apache.catalina.Context; +import org.apache.catalina.servlets.DefaultServlet; +import org.apache.catalina.startup.Tomcat; +import org.apache.tomcat.util.net.TesterSupport; +import org.apache.tomcat.websocket.TesterMessageCountClient.BasicText; +import org.apache.tomcat.websocket.TesterMessageCountClient.TesterProgrammaticEndpoint; + +public class TestWsWebSocketContainerSSL extends WebSocketBaseTest { + + private static final String MESSAGE_STRING_1 = "qwerty"; + + @Test + public void testConnectToServerEndpointSSL() throws Exception { + + Tomcat tomcat = getTomcatInstance(); + // No file system docBase required + Context ctx = tomcat.addContext("", null); + ctx.addApplicationListener(TesterEchoServer.Config.class.getName()); + Tomcat.addServlet(ctx, "default", new DefaultServlet()); + ctx.addServletMappingDecoded("/", "default"); + + TesterSupport.initSsl(tomcat); + + tomcat.start(); + + WebSocketContainer wsContainer = ContainerProvider.getWebSocketContainer(); + ClientEndpointConfig clientEndpointConfig = ClientEndpointConfig.Builder.create().build(); + clientEndpointConfig.getUserProperties().put(org.apache.tomcat.websocket.Constants.SSL_TRUSTSTORE_PROPERTY, + TesterSupport.CA_JKS); + Session wsSession = wsContainer.connectToServer(TesterProgrammaticEndpoint.class, clientEndpointConfig, + new URI("wss://localhost" + ":" + getPort() + TesterEchoServer.Config.PATH_ASYNC)); + CountDownLatch latch = new CountDownLatch(1); + BasicText handler = new BasicText(latch); + wsSession.addMessageHandler(handler); + wsSession.getBasicRemote().sendText(MESSAGE_STRING_1); + + boolean latchResult = handler.getLatch().await(10, TimeUnit.SECONDS); + + Assert.assertTrue(latchResult); + + Queue<String> messages = handler.getMessages(); + Assert.assertEquals(1, messages.size()); + Assert.assertEquals(MESSAGE_STRING_1, messages.peek()); + } +} diff --git a/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java b/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java index 169bdbde13..2d128d58a2 100644 --- a/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java +++ b/test/org/apache/tomcat/websocket/server/TestCloseBug58624.java @@ -89,7 +89,7 @@ public class TestCloseBug58624 extends WebSocketBaseTest { } @ClientEndpoint - public class Bug58624ClientEndpoint { + public static class Bug58624ClientEndpoint { private volatile Throwable t; diff --git a/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java b/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java index a165685627..410ff924a6 100644 --- a/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java +++ b/test/org/apache/tomcat/websocket/server/TestWsServerContainer.java @@ -77,7 +77,7 @@ public class TestWsServerContainer extends WebSocketBaseTest { SimpleClient client = new SimpleClient(); URI uri = new URI("ws://localhost:" + getPort() + "/echoBasic"); - try (Session session = wsContainer.connectToServer(client, uri);) { + try (Session session = wsContainer.connectToServer(client, uri)) { CountDownLatch latch = new CountDownLatch(1); BasicText handler = new BasicText(latch); session.addMessageHandler(handler); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org