Author: gsim
Date: Sun May  4 09:39:22 2008
New Revision: 653248

URL: http://svn.apache.org/viewvc?rev=653248&view=rev
Log:
Fix error handling for connection close during startup.


Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionHandler.cpp
    incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionHandler.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionHandler.cpp?rev=653248&r1=653247&r2=653248&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionHandler.cpp 
(original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionHandler.cpp Sun May 
 4 09:39:22 2008
@@ -170,9 +170,9 @@
 void ConnectionHandler::close(uint16_t replyCode, const std::string& replyText)
 {
     proxy.closeOk();
-    setState(CLOSED);
     errorCode = replyCode;
     errorText = replyText;
+    setState(CLOSED);
     QPID_LOG(warning, "Broker closed connection: " << replyCode << ", " << 
replyText);
     if (onError) {
         onError(replyCode, replyText);

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp?rev=653248&r1=653247&r2=653248&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/client/ConnectionImpl.cpp Sun May  4 
09:39:22 2008
@@ -48,12 +48,13 @@
     handler.out = boost::bind(&Connector::send, boost::ref(connector), _1);
     handler.onClose = boost::bind(&ConnectionImpl::closed, this,
                                   NORMAL, std::string());
-    handler.onError = boost::bind(&ConnectionImpl::closed, this, _1, _2);
     connector.setInputHandler(&handler);
     connector.setTimeoutHandler(this);
     connector.setShutdownHandler(this);
 
     open(settings.host, settings.port);
+    //only set error handler once  open
+    handler.onError = boost::bind(&ConnectionImpl::closed, this, _1, _2);
 }
 
 ConnectionImpl::~ConnectionImpl() {


Reply via email to