You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2008/03/17 18:44:58 UTC

svn commit: r637989 - /incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java

Author: ritchiem
Date: Mon Mar 17 10:44:56 2008
New Revision: 637989

URL: http://svn.apache.org/viewvc?rev=637989&view=rev
Log:
QPID-857 : Reset the State Manager when receiveing a CLOSED state.

Modified:
    incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java

Modified: incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=637989&r1=637988&r2=637989&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java (original)
+++ incubator/qpid/branches/M2.1/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java Mon Mar 17 10:44:56 2008
@@ -539,18 +539,24 @@
         {
 
             TransportConnection.getInstance(brokerDetail).connect(_protocolHandler, brokerDetail);
-             // this blocks until the connection has been set up or when an error
-             // has prevented the connection being set up
+            // this blocks until the connection has been set up or when an error
+            // has prevented the connection being set up
 
             //_protocolHandler.attainState(AMQState.CONNECTION_OPEN);
             AMQState state = _protocolHandler.attainState(openOrClosedStates);
-            if(state == AMQState.CONNECTION_OPEN)
+            if (state == AMQState.CONNECTION_OPEN)
             {
-
                 _failoverPolicy.attainedConnection();
 
                 // Again this should be changed to a suitable notify
                 _connected = true;
+            }
+            else if (state == AMQState.CONNECTION_CLOSED)
+            {
+                //We need to change protocol handler here as an error during the connect will not
+                // cause the StateManager to be replaced. So the state is out of sync on reconnect
+                // This occurs here when we need to re-negotiate protocol versions
+                _protocolHandler.getStateManager().changeState(AMQState.CONNECTION_NOT_STARTED);
             }
         }
         catch (AMQException e)