summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ConnectionI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r--cpp/src/Ice/ConnectionI.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index abb6c2f31cc..224fbf3c902 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -421,7 +421,7 @@ Ice::ConnectionI::waitUntilFinished()
}
void
-Ice::ConnectionI::monitor()
+Ice::ConnectionI::monitor(const IceUtil::Time& now)
{
IceUtil::Monitor<IceUtil::Mutex>::TryLock sync(*this);
if(!sync.acquired())
@@ -445,7 +445,7 @@ Ice::ConnectionI::monitor()
return;
}
- if(IceUtil::Time::now(IceUtil::Time::Monotonic) >= _acmAbsoluteTimeout)
+ if(now >= _acmAbsoluteTimeout)
{
setState(StateClosing, ConnectionTimeoutException(__FILE__, __LINE__));
}
@@ -985,12 +985,7 @@ Ice::ConnectionI::setAdapter(const ObjectAdapterPtr& adapter)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
- if(_state == StateClosing || _state == StateClosed)
- {
- assert(_exception.get());
- _exception->ice_throw();
- }
- else if(_state <= StateNotValidated)
+ if(_state <= StateNotValidated || _state >= StateClosing)
{
return;
}
@@ -2357,7 +2352,7 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
_asyncRequests.erase(q);
}
}
-
+ notifyAll(); // Notify threads blocked in close(false)
break;
}
@@ -2380,10 +2375,6 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
}
}
}
- catch(const SocketException& ex)
- {
- exception(ex);
- }
catch(const LocalException& ex)
{
if(_endpoint->datagram())