You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2017/12/12 17:09:59 UTC
qpid-broker-j git commit: QPID-8047: [Broker-J][AMQP 0-10] Fix NPE on
receiving session.detach for unknown session
Repository: qpid-broker-j
Updated Branches:
refs/heads/7.0.x 6747c7dbc -> 476589e4c
QPID-8047: [Broker-J][AMQP 0-10] Fix NPE on receiving session.detach for unknown session
Only change fixing the issue is merged from master commit c37376a2a8e139893d5442266c7bcb218ab18ce8
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/476589e4
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/476589e4
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/476589e4
Branch: refs/heads/7.0.x
Commit: 476589e4cc1df93987843f9233ea926cdbaf73d5
Parents: 6747c7d
Author: Alex Rudyy <or...@apache.org>
Authored: Tue Dec 5 11:17:23 2017 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Tue Dec 12 17:06:56 2017 +0000
----------------------------------------------------------------------
.../v0_10/ServerConnectionDelegate.java | 30 ++++++++++++++------
1 file changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/476589e4/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
index cab769f..43c3bf1 100644
--- a/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
+++ b/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
@@ -363,17 +363,31 @@ public class ServerConnectionDelegate extends MethodDelegate<ServerConnection> i
@Override
public void sessionDetach(ServerConnection conn, SessionDetach dtc)
{
- stopAllSubscriptions(conn, dtc);
- ServerSession ssn = conn.getSession(dtc.getChannel());
- ssn.setClose(true);
- ssn.sessionDetached(dtc.getName(), ssn.getDetachCode() == null? SessionDetachCode.NORMAL: ssn.getDetachCode());
- conn.unmap(ssn);
- ssn.closed();
+ int channel = dtc.getChannel();
+ ServerSession ssn = conn.getSession(channel);
+ if (ssn != null)
+ {
+ stopAllSubscriptions(ssn);
+ ssn.setClose(true);
+ ssn.sessionDetached(dtc.getName(),
+ ssn.getDetachCode() == null ? SessionDetachCode.NORMAL : ssn.getDetachCode());
+ conn.unmap(ssn);
+ ssn.closed();
+ }
+ else
+ {
+ if(LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("SessionDetach received on unattached channel : {}", channel);
+ }
+ SessionDetached sessionDetached = new SessionDetached(dtc.getName(), SessionDetachCode.NOT_ATTACHED);
+ sessionDetached.setChannel(channel);
+ conn.invoke(sessionDetached);
+ }
}
- private void stopAllSubscriptions(ServerConnection conn, SessionDetach dtc)
+ private void stopAllSubscriptions(final ServerSession ssn)
{
- final ServerSession ssn = conn.getSession(dtc.getChannel());
final Collection<ConsumerTarget_0_10> subs = ssn.getSubscriptions();
for (ConsumerTarget_0_10 subscription_0_10 : subs)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org