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 2014/09/16 12:55:25 UTC

svn commit: r1625241 - /qpid/trunk/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/SessionEndpoint.java

Author: rgodfrey
Date: Tue Sep 16 10:55:24 2014
New Revision: 1625241

URL: http://svn.apache.org/r1625241
Log:
QPID-6103 : Fix NPE which occurred when first flow was sent before receiving initial flow from partner

Modified:
    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-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=1625241&r1=1625240&r2=1625241&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 Tue Sep 16 10:55:24 2014
@@ -772,10 +772,13 @@ public class SessionEndpoint
     }
     public void sendFlow(final Flow flow)
     {
-        final int nextIncomingId = _nextIncomingTransferId.intValue();
-        flow.setNextIncomingId(UnsignedInteger.valueOf(nextIncomingId));
+        if(_nextIncomingTransferId != null)
+        {
+            final int nextIncomingId = _nextIncomingTransferId.intValue();
+            flow.setNextIncomingId(UnsignedInteger.valueOf(nextIncomingId));
+            _lastSentIncomingLimit = UnsignedInteger.valueOf(nextIncomingId + _availableIncomingCredit);
+        }
         flow.setIncomingWindow(UnsignedInteger.valueOf(_availableIncomingCredit));
-        _lastSentIncomingLimit = UnsignedInteger.valueOf(nextIncomingId + _availableIncomingCredit);
 
         flow.setNextOutgoingId(UnsignedInteger.valueOf(_nextOutgoingTransferId.intValue()));
         flow.setOutgoingWindow(UnsignedInteger.valueOf(_availableOutgoingCredit));
@@ -784,11 +787,15 @@ public class SessionEndpoint
 
     public void sendFlowConditional()
     {
-        UnsignedInteger clientsCredit = _lastSentIncomingLimit.subtract(UnsignedInteger.valueOf(_nextIncomingTransferId.intValue()));
-        int i = UnsignedInteger.valueOf(_availableIncomingCredit).subtract(clientsCredit).compareTo(clientsCredit);
-        if(i >=0)
+        if(_nextIncomingTransferId != null)
         {
-            sendFlow();
+            UnsignedInteger clientsCredit =
+                    _lastSentIncomingLimit.subtract(UnsignedInteger.valueOf(_nextIncomingTransferId.intValue()));
+            int i = UnsignedInteger.valueOf(_availableIncomingCredit).subtract(clientsCredit).compareTo(clientsCredit);
+            if (i >= 0)
+            {
+                sendFlow();
+            }
         }
 
     }



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