summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2016-07-28 06:36:05 +0200
committerStefan Metzmacher <metze@samba.org>2016-07-28 10:06:10 +0200
commitcaa231ac7621be117230c18906111d6b3f74afea (patch)
tree85424a8c83b38594c1d5c1416cca1fb0cc0daafb
parent192e54c91d007268e127e4ce4f95972c9492b540 (diff)
downloadsamba-caa231ac7621be117230c18906111d6b3f74afea.tar.gz
s4:pyrpc: correctly implement .request_timeout
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Garming Sam <garming@samba.org>
-rw-r--r--source4/librpc/rpc/pyrpc.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 948cad212f6..834000c6574 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -172,6 +172,31 @@ static PyObject *py_iface_user_session_key(PyObject *obj, void *closure)
return session_key_obj;
}
+static PyObject *py_iface_get_timeout(PyObject *obj, void *closure)
+{
+ dcerpc_InterfaceObject *iface = (dcerpc_InterfaceObject *)obj;
+ uint32_t timeout;
+
+ timeout = dcerpc_binding_handle_set_timeout(iface->binding_handle, 0);
+ dcerpc_binding_handle_set_timeout(iface->binding_handle, timeout);
+
+ return PyLong_FromUnsignedLong(timeout);
+}
+
+static int py_iface_set_timeout(PyObject *obj, PyObject *value, void *closure)
+{
+ dcerpc_InterfaceObject *iface = (dcerpc_InterfaceObject *)obj;
+ uint32_t timeout;
+
+ timeout = PyLong_AsUnsignedLong(value);
+ if (PyErr_Occurred() != NULL) {
+ return -1;
+ }
+
+ dcerpc_binding_handle_set_timeout(iface->binding_handle, timeout);
+ return 0;
+}
+
static PyGetSetDef dcerpc_interface_getsetters[] = {
{ discard_const_p(char, "server_name"), py_iface_server_name, NULL,
discard_const_p(char, "name of the server, if connected over SMB") },
@@ -183,12 +208,7 @@ static PyGetSetDef dcerpc_interface_getsetters[] = {
discard_const_p(char, "session key (as used for blob encryption on LSA and SAMR)") },
{ discard_const_p(char, "user_session_key"), py_iface_user_session_key, NULL,
discard_const_p(char, "user_session key (as used for blob encryption on DRSUAPI)") },
- { NULL }
-};
-
-static PyMemberDef dcerpc_interface_members[] = {
- { discard_const_p(char, "request_timeout"), T_INT,
- offsetof(struct dcerpc_pipe, request_timeout), 0,
+ { discard_const_p(char, "request_timeout"), py_iface_get_timeout, py_iface_set_timeout,
discard_const_p(char, "request timeout, in seconds") },
{ NULL }
};
@@ -322,7 +342,6 @@ static PyTypeObject dcerpc_InterfaceType = {
.tp_basicsize = sizeof(dcerpc_InterfaceObject),
.tp_dealloc = dcerpc_interface_dealloc,
.tp_getset = dcerpc_interface_getsetters,
- .tp_members = dcerpc_interface_members,
.tp_methods = dcerpc_interface_methods,
.tp_doc = "ClientConnection(binding, syntax, lp_ctx=None, credentials=None) -> connection\n"
"\n"