diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-05-24 23:22:49 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-05-24 23:22:49 +0200 |
commit | 21b6e9ec9ea08cc5e19a068d68331c178091caa6 (patch) | |
tree | b08abad23a8e34bb3cb6aa9ff4f3e98942149c01 | |
parent | 5863864f1d8df53b32f24cf41e726e3bddb528ce (diff) | |
download | samba-21b6e9ec9ea08cc5e19a068d68331c178091caa6.tar.gz samba-21b6e9ec9ea08cc5e19a068d68331c178091caa6.tar.bz2 samba-21b6e9ec9ea08cc5e19a068d68331c178091caa6.zip |
Add convenience function for creating objects with NDR error codes.
(This used to be commit 991541a78c2428db89509081cc28072c9b542ffa)
-rw-r--r-- | source4/librpc/rpc/pyrpc.h | 6 | ||||
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Samba4/Python.pm | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/source4/librpc/rpc/pyrpc.h b/source4/librpc/rpc/pyrpc.h index 3857f53634..65501b6b83 100644 --- a/source4/librpc/rpc/pyrpc.h +++ b/source4/librpc/rpc/pyrpc.h @@ -45,4 +45,10 @@ typedef struct { PyAPI_DATA(PyTypeObject) dcerpc_InterfaceType; +#define PyErr_FromNdrError(err) PyErr_FromNTSTATUS(ndr_map_error2ntstatus(err)) + +#define PyErr_SetNdrError(err) \ + PyErr_SetObject(PyExc_RuntimeError, PyErr_FromNdrError(err)) + + #endif /* _PYRPC_H_ */ diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm index 5e76ff027b..26197365ee 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/Python.pm @@ -241,7 +241,7 @@ sub PythonStruct($$$$$$) $self->pidl("err = ndr_push_struct_blob(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_push_flags_fn_t)ndr_push_$name);"); $self->pidl("if (err != NDR_ERR_SUCCESS) {"); $self->indent; - $self->pidl("PyErr_SetString(PyExc_RuntimeError, \"Unable to ndr pack\");"); + $self->pidl("PyErr_SetNdrError(err);"); $self->pidl("return NULL;"); $self->deindent; $self->pidl("}"); @@ -263,7 +263,7 @@ sub PythonStruct($$$$$$) $self->pidl("err = ndr_pull_struct_blob_all(&blob, py_talloc_get_mem_ctx(py_obj), NULL, object, (ndr_pull_flags_fn_t)ndr_pull_$name);"); $self->pidl("if (err != NDR_ERR_SUCCESS) {"); $self->indent; - $self->pidl("PyErr_SetString(PyExc_RuntimeError, \"Unable to ndr unpack\");"); + $self->pidl("PyErr_SetNdrError(err);"); $self->pidl("return NULL;"); $self->deindent; $self->pidl("}"); |