You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2013/10/24 14:50:49 UTC

svn commit: r1535365 - in /qpid/trunk/qpid/java: amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/

Author: rgodfrey
Date: Thu Oct 24 12:50:48 2013
New Revision: 1535365

URL: http://svn.apache.org/r1535365
Log:
QPID-5206 : Applied patch from David Ingham

Modified:
    qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
    qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/LinkEndpoint.java
    qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java

Modified: qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java?rev=1535365&r1=1535364&r2=1535365&view=diff
==============================================================================
--- qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java (original)
+++ qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java Thu Oct 24 12:50:48 2013
@@ -921,7 +921,9 @@ public class SessionImpl implements Sess
                             consumers.remove();
                             try
                             {
-                                _connection.getExceptionListener().onException(e);
+                                ExceptionListener expListener = _connection.getExceptionListener();
+                                if (expListener != null)
+                                    expListener.onException(e);
                                 consumer.close();
                             }
                             catch (JMSException e1)

Modified: qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/LinkEndpoint.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/LinkEndpoint.java?rev=1535365&r1=1535364&r2=1535365&view=diff
==============================================================================
--- qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/LinkEndpoint.java (original)
+++ qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/LinkEndpoint.java Thu Oct 24 12:50:48 2013
@@ -395,14 +395,17 @@ public abstract class LinkEndpoint<T ext
                 default:
                     return;
             }
+            
+            if (getSession().getState() != SessionState.END_RECVD)
+            {
+                Detach detach = new Detach();
+                detach.setHandle(getLocalHandle());
+                if(close)
+                    detach.setClosed(close);
+                detach.setError(error);
 
-            Detach detach = new Detach();
-            detach.setHandle(getLocalHandle());
-            if(close)
-                detach.setClosed(close);
-            detach.setError(error);
-
-            getSession().sendDetach(detach);
+                getSession().sendDetach(detach);
+            }
 
             getLock().notifyAll();
         }

Modified: qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java?rev=1535365&r1=1535364&r2=1535365&view=diff
==============================================================================
--- qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java (original)
+++ qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java Thu Oct 24 12:50:48 2013
@@ -187,9 +187,16 @@ public class SessionEndpoint
     private void detachLinks()
     {
         Collection<UnsignedInteger> handles = new ArrayList<UnsignedInteger>(_remoteLinkEndpoints.keySet());
+        Error error = new Error();
+        error.setCondition(LinkError.DETACH_FORCED);
+        error.setDescription("Force detach the link because the session is remotely ended.");
         for(UnsignedInteger handle : handles)
         {
-            detach(handle, null);
+            Detach detach = new Detach();
+            detach.setClosed(false);
+            detach.setHandle(handle);
+            detach.setError(error);
+            detach(handle, detach);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org