summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Outgoing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Outgoing.cpp')
-rw-r--r--cpp/src/Ice/Outgoing.cpp10
1 files changed, 4 insertions, 6 deletions
diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp
index 165255d8a7d..2a59e8b3796 100644
--- a/cpp/src/Ice/Outgoing.cpp
+++ b/cpp/src/Ice/Outgoing.cpp
@@ -297,7 +297,6 @@ IceInternal::Outgoing::invoke()
if(_exception.get())
{
- assert(!_sent);
_exception->ice_throw();
}
}
@@ -515,13 +514,13 @@ IceInternal::Outgoing::finished(BasicStream& is)
}
void
-IceInternal::Outgoing::finished(const LocalException& ex)
+IceInternal::Outgoing::finished(const LocalException& ex, bool sent)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_monitor);
assert(_state <= StateInProgress);
-
_state = StateFailed;
_exception.reset(dynamic_cast<LocalException*>(ex.ice_clone()));
+ _sent = sent;
_monitor.notify();
}
@@ -543,7 +542,7 @@ IceInternal::Outgoing::throwUserException()
IceInternal::BatchOutgoing::BatchOutgoing(RequestHandler* handler) :
_handler(handler),
_connection(0),
- _sent(false),
+ _sent(false),
_os(handler->getReference()->getInstance().get())
{
}
@@ -570,7 +569,6 @@ IceInternal::BatchOutgoing::invoke()
if(_exception.get())
{
- assert(!_sent);
_exception->ice_throw();
}
}
@@ -592,7 +590,7 @@ IceInternal::BatchOutgoing::sent(bool notify)
}
void
-IceInternal::BatchOutgoing::finished(const Ice::LocalException& ex)
+IceInternal::BatchOutgoing::finished(const Ice::LocalException& ex, bool)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(_monitor);
_exception.reset(dynamic_cast<LocalException*>(ex.ice_clone()));