summaryrefslogtreecommitdiff
path: root/source4/lib/messaging/pymessaging.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib/messaging/pymessaging.c')
-rw-r--r--source4/lib/messaging/pymessaging.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/source4/lib/messaging/pymessaging.c b/source4/lib/messaging/pymessaging.c
index 62370ae7567..1e9588c6737 100644
--- a/source4/lib/messaging/pymessaging.c
+++ b/source4/lib/messaging/pymessaging.c
@@ -235,10 +235,12 @@ static PyObject *py_irpc_servers_byname(PyObject *self, PyObject *args, PyObject
{
imessaging_Object *iface = (imessaging_Object *)self;
char *server_name;
+ unsigned i, num_ids;
struct server_id *ids;
PyObject *pylist;
- int i;
TALLOC_CTX *mem_ctx = talloc_new(NULL);
+ NTSTATUS status;
+
if (!mem_ctx) {
PyErr_NoMemory();
return NULL;
@@ -249,25 +251,21 @@ static PyObject *py_irpc_servers_byname(PyObject *self, PyObject *args, PyObject
return NULL;
}
- ids = irpc_servers_byname(iface->msg_ctx, mem_ctx, server_name);
-
- if (ids == NULL) {
+ status = irpc_servers_byname(iface->msg_ctx, mem_ctx, server_name,
+ &num_ids, &ids);
+ if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(mem_ctx);
PyErr_SetString(PyExc_KeyError, "No such name");
return NULL;
}
- for (i = 0; !server_id_is_disconnected(&ids[i]); i++) {
- /* Do nothing */
- }
-
- pylist = PyList_New(i);
+ pylist = PyList_New(num_ids);
if (pylist == NULL) {
TALLOC_FREE(mem_ctx);
PyErr_NoMemory();
return NULL;
}
- for (i = 0; !server_id_is_disconnected(&ids[i]); i++) {
+ for (i = 0; i < num_ids; i++) {
PyObject *py_server_id;
struct server_id *p_server_id = talloc(NULL, struct server_id);
if (!p_server_id) {