From e85d08112168fd10e5223fab28d73c5e6a087cd5 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Sun, 30 Oct 2011 18:42:37 +0000 Subject: 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 --- .../common/src/main/java/org/apache/qpid/transport/Connection.java | 4 ++-- .../src/main/java/org/apache/qpid/transport/ServerDelegate.java | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'java/common/src') diff --git a/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/java/common/src/main/java/org/apache/qpid/transport/Connection.java index 06c5c83031..b78433052c 100644 --- a/java/common/src/main/java/org/apache/qpid/transport/Connection.java +++ b/java/common/src/main/java/org/apache/qpid/transport/Connection.java @@ -697,9 +697,9 @@ public class Connection extends ConnectionInvoker return channels.values(); } - public boolean hasSessionWithName(final String name) + public boolean hasSessionWithName(final byte[] name) { - return sessions.containsKey(new Binary(name.getBytes())); + return sessions.containsKey(new Binary(name)); } public void notifyFailoverRequired() diff --git a/java/common/src/main/java/org/apache/qpid/transport/ServerDelegate.java b/java/common/src/main/java/org/apache/qpid/transport/ServerDelegate.java index 82fa6ca473..07d21c9904 100644 --- a/java/common/src/main/java/org/apache/qpid/transport/ServerDelegate.java +++ b/java/common/src/main/java/org/apache/qpid/transport/ServerDelegate.java @@ -194,11 +194,18 @@ public class ServerDelegate extends ConnectionDelegate @Override public void sessionAttach(Connection conn, SessionAttach atc) + { + sessionAttachImpl(conn, atc); + } + + protected Session sessionAttachImpl(Connection conn, SessionAttach atc) { Session ssn = getSession(conn, atc); conn.map(ssn, atc.getChannel()); ssn.sessionAttached(atc.getName()); ssn.setState(Session.State.OPEN); + + return ssn; } protected void setConnectionTuneOkChannelMax(final Connection conn, final int okChannelMax) -- cgit v1.2.1