summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Incoming.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r--cpp/src/Ice/Incoming.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index c60efce2321..4e5e351dd8a 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -11,6 +11,7 @@
#include <Ice/Incoming.h>
#include <Ice/ObjectAdapter.h>
#include <Ice/ServantLocator.h>
+#include <Ice/Proxy.h>
#include <Ice/Object.h>
#include <Ice/Exception.h>
@@ -29,8 +30,19 @@ void
IceInternal::Incoming::invoke()
{
Current current;
- _is.read(current.identity);
- _is.read(current.facet);
+ Byte gotProxy;
+ _is.read(gotProxy);
+ if (gotProxy)
+ {
+ _is.read(current.proxy);
+ current.identity = current.proxy->ice_getIdentity();
+ current.facet = current.proxy->ice_getFacet();
+ }
+ else
+ {
+ _is.read(current.identity);
+ _is.read(current.facet);
+ }
_is.read(current.operation);
Int sz;
_is.read(sz);