summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Connection.cpp')
-rw-r--r--cpp/src/Ice/Connection.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/cpp/src/Ice/Connection.cpp b/cpp/src/Ice/Connection.cpp
index 8dda6a9abb0..01ecb5fe6e5 100644
--- a/cpp/src/Ice/Connection.cpp
+++ b/cpp/src/Ice/Connection.cpp
@@ -293,11 +293,10 @@ IceInternal::Connection::message(BasicStream& stream)
if (_state == StateClosed)
{
- ::IceUtil::ThreadControl::yield();
+ IceUtil::ThreadControl::yield();
return;
}
-
Byte messageType;
try
@@ -535,18 +534,22 @@ IceInternal::Connection::message(BasicStream& stream)
}
void
-IceInternal::Connection::exception(const LocalException& ex)
+IceInternal::Connection::finished()
{
IceUtil::RecMutex::Lock sync(*this);
- setState(StateClosed, ex);
+
+ _threadPool->promoteFollower();
+
+ assert(_state == StateClosed);
+
+ _transceiver->close();
}
void
-IceInternal::Connection::finished()
+IceInternal::Connection::exception(const LocalException& ex)
{
IceUtil::RecMutex::Lock sync(*this);
- assert(_state == StateClosed);
- _transceiver->close();
+ setState(StateClosed, ex);
}
/*