You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ga...@apache.org on 2020/02/13 03:13:16 UTC
[activemq-artemis] branch master updated: ARTEMIS-2619 allow
disabling STOMP 'server' header
This is an automated email from the ASF dual-hosted git repository.
gaohoward pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new daae7e7 ARTEMIS-2619 allow disabling STOMP 'server' header
new 05b9bf6 This closes #2980
daae7e7 is described below
commit daae7e750a86f4e8f31f88e63766eb965131cef7
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Mon Feb 10 09:50:34 2020 -0600
ARTEMIS-2619 allow disabling STOMP 'server' header
---
.../remoting/impl/netty/TransportConstants.java | 3 +++
.../protocol/stomp/v11/StompFrameHandlerV11.java | 5 +++-
.../tests/integration/stomp/StompTestBase.java | 17 ++++---------
.../tests/integration/stomp/v11/StompV11Test.java | 28 ++++++++++++++++++++++
4 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
index d9d2d12..eb2472f 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
@@ -290,6 +290,8 @@ public class TransportConstants {
public static final String QUIET_PERIOD = "quietPeriod";
+ public static final String DISABLE_STOMP_SERVER_HEADER = "disableStompServerHeader";
+
/** We let this to be defined as a System Variable, as we need a different timeout over our testsuite.
* When running on a real server, this is the default we want.
* When running on a test suite, we need it to be 0, You should see a property on the main pom.xml.
@@ -371,6 +373,7 @@ public class TransportConstants {
allowableAcceptorKeys.add(TransportConstants.TRUST_MANAGER_FACTORY_PLUGIN_PROP_NAME);
allowableAcceptorKeys.add(TransportConstants.SHUTDOWN_TIMEOUT);
allowableAcceptorKeys.add(TransportConstants.QUIET_PERIOD);
+ allowableAcceptorKeys.add(TransportConstants.DISABLE_STOMP_SERVER_HEADER);
ALLOWABLE_ACCEPTOR_KEYS = Collections.unmodifiableSet(allowableAcceptorKeys);
diff --git a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v11/StompFrameHandlerV11.java b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v11/StompFrameHandlerV11.java
index 9d3f912..76d9db6 100644
--- a/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v11/StompFrameHandlerV11.java
+++ b/artemis-protocols/artemis-stomp-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/stomp/v11/StompFrameHandlerV11.java
@@ -85,7 +85,10 @@ public class StompFrameHandlerV11 extends VersionedStompFrameHandler implements
response.addHeader(Stomp.Headers.Connected.SESSION, connection.getID().toString());
// server
- response.addHeader(Stomp.Headers.Connected.SERVER, connection.getActiveMQServerName());
+ Object disableServerHeader = connection.getAcceptorUsed().getConfiguration().get(TransportConstants.DISABLE_STOMP_SERVER_HEADER);
+ if (disableServerHeader == null || !Boolean.parseBoolean(disableServerHeader.toString())) {
+ response.addHeader(Stomp.Headers.Connected.SERVER, connection.getActiveMQServerName());
+ }
if (requestID != null) {
response.addHeader(Stomp.Headers.Connected.RESPONSE_ID, requestID);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTestBase.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTestBase.java
index bed4bd1..0194f94 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTestBase.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTestBase.java
@@ -31,10 +31,8 @@ import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.UUID;
import org.apache.activemq.artemis.api.core.RoutingType;
@@ -42,12 +40,9 @@ import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.CoreAddressConfiguration;
import org.apache.activemq.artemis.core.config.CoreQueueConfiguration;
-import org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolManagerFactory;
import org.apache.activemq.artemis.core.protocol.stomp.Stomp;
-import org.apache.activemq.artemis.core.protocol.stomp.StompProtocolManagerFactory;
import org.apache.activemq.artemis.core.remoting.impl.invm.InVMAcceptorFactory;
import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory;
-import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory;
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.security.Role;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -176,21 +171,17 @@ public abstract class StompTestBase extends ActiveMQTestBase {
* @throws Exception
*/
protected ActiveMQServer createServer() throws Exception {
- Map<String, Object> params = new HashMap<>();
- params.put(TransportConstants.PROTOCOLS_PROP_NAME, StompProtocolManagerFactory.STOMP_PROTOCOL_NAME + "," + MQTTProtocolManagerFactory.MQTT_PROTOCOL_NAME);
- params.put(TransportConstants.PORT_PROP_NAME, TransportConstants.DEFAULT_STOMP_PORT);
- params.put(TransportConstants.STOMP_CONSUMERS_CREDIT, "-1");
+ String stompAcceptorURI = "tcp://" + TransportConstants.DEFAULT_HOST + ":" + TransportConstants.DEFAULT_STOMP_PORT + "?" + TransportConstants.STOMP_CONSUMERS_CREDIT + "=-1";
if (isEnableStompMessageId()) {
- params.put(TransportConstants.STOMP_ENABLE_MESSAGE_ID, true);
+ stompAcceptorURI += ";" + TransportConstants.STOMP_ENABLE_MESSAGE_ID + "=true";
}
if (getStompMinLargeMessageSize() != null) {
- params.put(TransportConstants.STOMP_MIN_LARGE_MESSAGE_SIZE, 2048);
+ stompAcceptorURI += ";" + TransportConstants.STOMP_MIN_LARGE_MESSAGE_SIZE + "=2048";
}
- TransportConfiguration stompTransport = new TransportConfiguration(NettyAcceptorFactory.class.getName(), params);
Configuration config = createBasicConfig().setSecurityEnabled(isSecurityEnabled())
.setPersistenceEnabled(isPersistenceEnabled())
- .addAcceptorConfiguration(stompTransport)
+ .addAcceptorConfiguration("stomp", stompAcceptorURI)
.addAcceptorConfiguration(new TransportConfiguration(InVMAcceptorFactory.class.getName()))
.setConnectionTtlCheckInterval(500)
.addQueueConfiguration(new CoreQueueConfiguration().setAddress(getQueueName()).setName(getQueueName()).setRoutingType(RoutingType.ANYCAST))
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/v11/StompV11Test.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/v11/StompV11Test.java
index 78134f0..5605f0a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/v11/StompV11Test.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/v11/StompV11Test.java
@@ -38,6 +38,7 @@ import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.protocol.stomp.Stomp;
import org.apache.activemq.artemis.core.protocol.stomp.StompConnection;
import org.apache.activemq.artemis.core.protocol.stomp.v11.StompFrameHandlerV11;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
@@ -238,6 +239,33 @@ public class StompV11Test extends StompTestBase {
}
@Test
+ public void testServerFrame() throws Exception {
+ { // the default case
+ ClientStompFrame frame = conn.connect(defUser, defPass);
+ conn.disconnect();
+ assertTrue(frame.getHeader(Stomp.Headers.Connected.SERVER) != null);
+ server.getRemotingService().destroyAcceptor("stomp");
+ }
+
+ { // explicitly set disableStompServerHeader=false
+ server.getRemotingService().createAcceptor("stomp", "tcp://" + TransportConstants.DEFAULT_HOST + ":" + TransportConstants.DEFAULT_STOMP_PORT + "?" + TransportConstants.DISABLE_STOMP_SERVER_HEADER + "=false").start();
+ conn = StompClientConnectionFactory.createClientConnection(uri);
+ ClientStompFrame frame = conn.connect(defUser, defPass);
+ conn.disconnect();
+ assertTrue(frame.getHeader(Stomp.Headers.Connected.SERVER) != null);
+ server.getRemotingService().destroyAcceptor("stomp");
+ }
+
+ { // explicitly set disableStompServerHeader=true
+ server.getRemotingService().createAcceptor("stomp", "tcp://" + TransportConstants.DEFAULT_HOST + ":" + TransportConstants.DEFAULT_STOMP_PORT + "?" + TransportConstants.DISABLE_STOMP_SERVER_HEADER + "=true").start();
+ conn = StompClientConnectionFactory.createClientConnection(uri);
+ ClientStompFrame frame = conn.connect(defUser, defPass);
+ conn.disconnect();
+ assertTrue(frame.getHeader(Stomp.Headers.Connected.SERVER) == null);
+ }
+ }
+
+ @Test
public void testSendAndReceive() throws Exception {
conn.connect(defUser, defPass);