From a321dd3aafa0f6ec8b39cd4fc64146dfbf24ce65 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sat, 26 Jan 2013 09:09:23 +1100 Subject: [PATCH] pymessaging: Pass around the server_id struct to python callbacks rather than the tuple This is not used currently, but may avoid going to and from the python types when we do not need to. Andrew Bartlett Reviewed-by: Stefan Metzmacher --- source4/lib/messaging/pymessaging.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/source4/lib/messaging/pymessaging.c b/source4/lib/messaging/pymessaging.c index f8703b25afe..3901d4d599c 100644 --- a/source4/lib/messaging/pymessaging.c +++ b/source4/lib/messaging/pymessaging.c @@ -163,10 +163,20 @@ static void py_msg_callback_wrapper(struct imessaging_context *msg, void *privat uint32_t msg_type, struct server_id server_id, DATA_BLOB *data) { - PyObject *callback = (PyObject *)private_data; + PyObject *py_server_id, *callback = (PyObject *)private_data; - PyObject_CallFunction(callback, discard_const_p(char, "i(KII)s#"), msg_type, - server_id.pid, server_id.task_id, server_id.vnn, + struct server_id *p_server_id = talloc(NULL, struct server_id); + if (!p_server_id) { + PyErr_NoMemory(); + return; + } + *p_server_id = server_id; + + py_server_id = py_return_ndr_struct("samba.dcerpc.server_id", "server_id", p_server_id, p_server_id); + talloc_unlink(NULL, p_server_id); + + PyObject_CallFunction(callback, discard_const_p(char, "i(O)s#"), msg_type, + py_server_id, data->data, data->length); } -- 2.11.4.GIT