QPID-8448: Make sure that actual connection is closed
This closes #59
diff --git a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/portunification/TlsOrPlainConnectionFactory.java b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/portunification/TlsOrPlainConnectionFactory.java
index 5c094fb..c3d0ac7 100644
--- a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/portunification/TlsOrPlainConnectionFactory.java
+++ b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/portunification/TlsOrPlainConnectionFactory.java
@@ -127,13 +127,11 @@
@Override
public void addListener(Listener listener)
{
- if (_actualConnection == null)
+ _listeners.add(listener);
+ AbstractConnection actualConnection = _actualConnection;
+ if (actualConnection != null)
{
- _listeners.add(listener);
- }
- else
- {
- _actualConnection.addListener(listener);
+ actualConnection.addListener(listener);
}
}
@@ -141,6 +139,11 @@
public void removeListener(Listener listener)
{
_listeners.remove(listener);
+ AbstractConnection actualConnection = _actualConnection;
+ if (actualConnection != null)
+ {
+ actualConnection.removeListener(listener);
+ }
}
@Override
@@ -157,6 +160,11 @@
listener.onOpened(this);
}
+ final AbstractConnection actualConnection = _actualConnection;
+ if (actualConnection != null)
+ {
+ actualConnection.onOpen();
+ }
}
@Override
@@ -167,6 +175,12 @@
LOG.debug("onClose {}", this);
}
+ final AbstractConnection actualConnection = _actualConnection;
+ if (actualConnection != null)
+ {
+ actualConnection.onClose();
+ }
+
for (Listener listener : _listeners)
{
listener.onClosed(this);
@@ -350,7 +364,10 @@
private SslConnection newSslConnection(final Connector connector, final EndPoint endPoint, final SSLEngine engine)
{
- return new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine);
+ final SslConnection sslConnection =
+ new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine);
+ TlsOrPlainConnectionFactory.this.configure(sslConnection, _connector, _endPoint);
+ return sslConnection;
}