summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/IncomingAsync.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/IncomingAsync.cpp')
-rw-r--r--cpp/src/Ice/IncomingAsync.cpp53
1 files changed, 3 insertions, 50 deletions
diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp
index edc9b64cf3b..5324af0508b 100644
--- a/cpp/src/Ice/IncomingAsync.cpp
+++ b/cpp/src/Ice/IncomingAsync.cpp
@@ -64,7 +64,7 @@ IceInternal::IncomingAsync::__response(bool ok)
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -100,7 +100,7 @@ IceInternal::IncomingAsync::__exception(const std::exception& exc)
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -118,7 +118,7 @@ IceInternal::IncomingAsync::__exception()
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -132,53 +132,6 @@ IceInternal::IncomingAsync::__exception()
}
bool
-IceInternal::IncomingAsync::__servantLocatorFinished()
-{
- try
- {
- if(_locator && _servant)
- {
- try
- {
- _locator->finished(_current, _servant, _cookie);
- }
- catch(const UserException& ex)
- {
- //
- // The operation may have already marshaled a reply; we must overwrite that reply.
- //
- if(_response)
- {
- _os.endWriteEncaps();
- _os.b.resize(headerSize + 4); // Reply status position.
- _os.write(replyUserException);
- _os.startWriteEncaps();
- _os.write(ex);
- _os.endWriteEncaps();
- _connection->sendResponse(&_os, _compress);
- }
- else
- {
- _connection->sendNoResponse();
- }
- return false;
- }
- }
- return true;
- }
- catch(const std::exception& ex)
- {
- __handleException(ex);
- return false;
- }
- catch(...)
- {
- __handleException();
- return false;
- }
-}
-
-bool
IceInternal::IncomingAsync::__validateResponse(bool ok)
{
if(!_retriable)