diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/ConnectRequestHandler.cpp | 5 | ||||
-rw-r--r-- | cpp/src/Ice/ConnectionFactory.cpp | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/cpp/src/Ice/ConnectRequestHandler.cpp b/cpp/src/Ice/ConnectRequestHandler.cpp index f306b6c26b6..8e04d74512e 100644 --- a/cpp/src/Ice/ConnectRequestHandler.cpp +++ b/cpp/src/Ice/ConnectRequestHandler.cpp @@ -226,6 +226,7 @@ ConnectRequestHandler::setConnection(const Ice::ConnectionIPtr& connection, bool { { Lock sync(*this); + assert(!_exception.get() && !_connection); _connection = connection; _compress = compress; } @@ -251,6 +252,7 @@ ConnectRequestHandler::setException(const Ice::LocalException& ex) { { Lock sync(*this); + assert(!_initialized && !_exception.get()); _exception.reset(dynamic_cast<Ice::LocalException*>(ex.ice_clone())); _proxy = 0; // Break cyclic reference count. _delegate = 0; // Break cyclic reference count. @@ -316,7 +318,7 @@ ConnectRequestHandler::flushRequests() { { Lock sync(*this); - assert(_connection); + assert(_connection && !_initialized); while(_batchRequestInProgress) { @@ -396,6 +398,7 @@ ConnectRequestHandler::flushRequests() { Lock sync(*this); + assert(!_initialized); _initialized = true; _flushing = false; notifyAll(); diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index 1704340d5f4..12fd5e15374 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -732,7 +732,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect const ConnectCallbackPtr& cb, const ConnectionIPtr& connection) { - vector<ConnectCallbackPtr> callbacks; + set<ConnectCallbackPtr> callbacks; { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); @@ -747,7 +747,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect { map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p); assert(q != _pending.end()); - callbacks.insert(callbacks.end(), q->second.begin(), q->second.end()); + callbacks.insert(q->second.begin(), q->second.end()); _pending.erase(q); } notifyAll(); @@ -765,7 +765,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect // // Notify any waiting callbacks. // - for(vector<ConnectCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p) + for(set<ConnectCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p) { (*p)->getConnection(); } |