diff options
author | Marc Laukien <marc@zeroc.com> | 2003-02-06 20:39:02 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2003-02-06 20:39:02 +0000 |
commit | 8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb (patch) | |
tree | 8fd580420dad30c88fc38c5e8940b9e68ffed297 /cpp/src/Ice/Incoming.cpp | |
parent | do not use Ice version in service shared library name (diff) | |
download | ice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.tar.bz2 ice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.tar.xz ice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.zip |
encaps fixes
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r-- | cpp/src/Ice/Incoming.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index 575901c0a94..37f23a5a9a7 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -56,14 +56,21 @@ IceInternal::IncomingBase::IncomingBase(IncomingBase& in) : } void -IceInternal::IncomingBase::__finishInvoke() +IceInternal::IncomingBase::__finishInvoke(bool success) { if(_locator && _servant) { _locator->finished(_current, _servant, _cookie); } - _is.endReadEncaps(); + if(success) + { + _is.endReadEncaps(); + } + else + { + _is.skipReadEncaps(); + } // // Send a response if necessary. If we don't need to send a @@ -265,7 +272,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(ex.operation); } - __finishInvoke(); + __finishInvoke(false); return; } catch(const LocalException& ex) @@ -282,7 +289,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(str.str()); } - __finishInvoke(); + __finishInvoke(false); return; } catch(const UserException& ex) @@ -299,7 +306,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(str.str()); } - __finishInvoke(); + __finishInvoke(false); return; } catch(const Exception& ex) @@ -316,7 +323,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(str.str()); } - __finishInvoke(); + __finishInvoke(false); return; } catch(const std::exception& ex) @@ -333,7 +340,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(str.str()); } - __finishInvoke(); + __finishInvoke(false); return; } catch(...) @@ -349,7 +356,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) _os.write(reason); } - __finishInvoke(); + __finishInvoke(false); return; } @@ -382,5 +389,5 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) } } - __finishInvoke(); + __finishInvoke(status == DispatchOK || status == DispatchUserException); } |