summaryrefslogtreecommitdiff
path: root/java/broker
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2011-10-30 18:42:37 +0000
committerRobert Gemmell <robbie@apache.org>2011-10-30 18:42:37 +0000
commite85d08112168fd10e5223fab28d73c5e6a087cd5 (patch)
tree2af2155169ec113a26969044bcd8d1b658242c90 /java/broker
parent9df5ba39017bd5d51f110ef7f6b1b7e07579087a (diff)
downloadqpid-python-e85d08112168fd10e5223fab28d73c5e6a087cd5.tar.gz
QPID-3428: update to stop duplicate 0-10 session registrations into the management layer, fixes a leak of the session and its associated connection at session removal time.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1195212 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java3
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java10
4 files changed, 9 insertions, 8 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
index b51e6aff1a..bc0d4e3bcc 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQConnectionModel.java
@@ -72,5 +72,5 @@ public interface AMQConnectionModel extends StatisticsGatherer
public String getUserName();
- public boolean isSessionNameUnique(String name);
+ public boolean isSessionNameUnique(byte[] name);
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
index bff0a79de1..b960ce8608 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
@@ -1396,8 +1396,9 @@ public class AMQProtocolEngine implements ServerProtocolEngine, Managable, AMQPr
}
@Override
- public boolean isSessionNameUnique(String name)
+ public boolean isSessionNameUnique(byte[] name)
{
+ // 0-8/0-9/0-9-1 sessions don't have names
return true;
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
index d83013afba..e428baeebe 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnection.java
@@ -389,7 +389,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel,
}
@Override
- public boolean isSessionNameUnique(String name)
+ public boolean isSessionNameUnique(byte[] name)
{
return !super.hasSessionWithName(name);
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
index 2de8a0425e..1e149c4d76 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
@@ -234,22 +234,22 @@ public class ServerConnectionDelegate extends ServerDelegate
@Override
public void sessionAttach(final Connection conn, final SessionAttach atc)
{
- final String clientId = new String(atc.getName());
- final Session ssn = getSession(conn, atc);
+ final Session ssn;
- if(isSessionNameUnique(clientId,conn))
+ if(isSessionNameUnique(atc.getName(), conn))
{
+ ssn = sessionAttachImpl(conn, atc);
conn.registerSession(ssn);
- super.sessionAttach(conn, atc);
}
else
{
+ ssn = getSession(conn, atc);
ssn.invoke(new SessionDetached(atc.getName(), SessionDetachCode.SESSION_BUSY));
ssn.closed();
}
}
- private boolean isSessionNameUnique(final String name, final Connection conn)
+ private boolean isSessionNameUnique(final byte[] name, final Connection conn)
{
final ServerConnection sconn = (ServerConnection) conn;
final String userId = sconn.getUserName();