summaryrefslogtreecommitdiff
path: root/py/modules/IcePy/Operation.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2011-05-04 17:51:35 -0700
committerMark Spruiell <mes@zeroc.com>2011-05-04 17:51:35 -0700
commit9afd50c19bceeb2be64bf0c7c6d7a0c2c126dde8 (patch)
tree44786ffd2f2bf17f6872f97ea109cb09243d9cf9 /py/modules/IcePy/Operation.cpp
parentminor doc fixes for RHEL (diff)
downloadice-9afd50c19bceeb2be64bf0c7c6d7a0c2c126dde8.tar.bz2
ice-9afd50c19bceeb2be64bf0c7c6d7a0c2c126dde8.tar.xz
ice-9afd50c19bceeb2be64bf0c7c6d7a0c2c126dde8.zip
bug 4976 - inconsistent operation mode for pseudo ops
Diffstat (limited to 'py/modules/IcePy/Operation.cpp')
-rw-r--r--py/modules/IcePy/Operation.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/py/modules/IcePy/Operation.cpp b/py/modules/IcePy/Operation.cpp
index 71a081e6e7c..c787f53c9e3 100644
--- a/py/modules/IcePy/Operation.cpp
+++ b/py/modules/IcePy/Operation.cpp
@@ -71,6 +71,7 @@ public:
string dispatchName;
bool sendsClasses;
bool returnsClasses;
+ bool pseudoOp;
private:
@@ -1055,6 +1056,11 @@ IcePy::Operation::Operation(const char* n, PyObject* m, PyObject* sm, int amdFla
{
exceptions.push_back(getException(PyTuple_GET_ITEM(ex, i)));
}
+
+ //
+ // Does the operation name start with "ice_"?
+ //
+ pseudoOp = name.find("ice_") == 0;
}
void
@@ -3695,7 +3701,13 @@ IcePy::TypedServantWrapper::ice_invoke_async(const Ice::AMD_Object_ice_invokePtr
}
}
- __checkMode(op->mode, current.mode);
+ //
+ // See bug 4976.
+ //
+ if(!op->pseudoOp)
+ {
+ __checkMode(op->mode, current.mode);
+ }
UpcallPtr up = new TypedUpcall(op, cb, current.adapter->getCommunicator());
up->dispatch(_servant, inParams, current);