summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/DispatchInterceptor.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2019-07-11 17:42:59 +0200
committerBenoit Foucher <benoit@zeroc.com>2019-07-11 17:42:59 +0200
commitbcd2c2d1b01e721be924b96247be86384ddc9738 (patch)
tree7b84ec6832dc13c548fe7d3c7098675c61bb06ec /cpp/src/Ice/DispatchInterceptor.cpp
parentFix .gitignore syntax (diff)
downloadice-bcd2c2d1b01e721be924b96247be86384ddc9738.tar.bz2
ice-bcd2c2d1b01e721be924b96247be86384ddc9738.tar.xz
ice-bcd2c2d1b01e721be924b96247be86384ddc9738.zip
Fixed dispatcher interceptor bug #435
Diffstat (limited to 'cpp/src/Ice/DispatchInterceptor.cpp')
-rw-r--r--cpp/src/Ice/DispatchInterceptor.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/cpp/src/Ice/DispatchInterceptor.cpp b/cpp/src/Ice/DispatchInterceptor.cpp
index 10457e990e9..ae12e77f900 100644
--- a/cpp/src/Ice/DispatchInterceptor.cpp
+++ b/cpp/src/Ice/DispatchInterceptor.cpp
@@ -21,4 +21,17 @@ Ice::DispatchInterceptor::_iceDispatch(IceInternal::Incoming& in, const Current&
{
return false;
}
+ catch(const std::exception&)
+ {
+ //
+ // If the input parameters weren't read, make sure we skip them here. It's needed to read the
+ // encoding version used by the client to eventually marshal the user exception. It's also needed
+ // if we are dispatch a batch oneway request to read the next batch request.
+ //
+ if(in.getCurrent().encoding.major == 0 && in.getCurrent().encoding.minor == 0)
+ {
+ in.skipReadParams();
+ }
+ throw;
+ }
}