summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
Diffstat (limited to 'source4')
-rw-r--r--source4/lib/messaging/messaging.c13
-rw-r--r--source4/scripting/ejs/smbcalls_rpc.c1
-rw-r--r--source4/torture/local/irpc.c1
-rw-r--r--source4/winbind/wb_async_helpers.c1
-rw-r--r--source4/winbind/wb_dom_info.c1
5 files changed, 8 insertions, 9 deletions
diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c
index c3d3ba7899..06eed05404 100644
--- a/source4/lib/messaging/messaging.c
+++ b/source4/lib/messaging/messaging.c
@@ -730,13 +730,18 @@ failed:
*/
NTSTATUS irpc_call_recv(struct irpc_request *irpc)
{
+ NTSTATUS status;
+
NT_STATUS_HAVE_NO_MEMORY(irpc);
+
while (!irpc->done) {
if (event_loop_once(irpc->msg_ctx->event.ev) != 0) {
return NT_STATUS_CONNECTION_DISCONNECTED;
- }
+ }
}
- return irpc->status;
+ status = irpc->status;
+ talloc_free(irpc);
+ return status;
}
/*
@@ -750,9 +755,7 @@ NTSTATUS irpc_call(struct messaging_context *msg_ctx,
{
struct irpc_request *irpc = irpc_call_send(msg_ctx, server_id,
table, callnum, r, mem_ctx);
- NTSTATUS status = irpc_call_recv(irpc);
- talloc_free(irpc);
- return status;
+ return irpc_call_recv(irpc);
}
/*
diff --git a/source4/scripting/ejs/smbcalls_rpc.c b/source4/scripting/ejs/smbcalls_rpc.c
index 4163896e71..c71a475a92 100644
--- a/source4/scripting/ejs/smbcalls_rpc.c
+++ b/source4/scripting/ejs/smbcalls_rpc.c
@@ -248,7 +248,6 @@ static int ejs_irpc_call(int eid, struct MprVar *io,
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
- talloc_free(reqs[i]);
/* add to the results array */
output = mprGetProperty(io, "output", NULL);
diff --git a/source4/torture/local/irpc.c b/source4/torture/local/irpc.c
index 861edc42fa..71744ad2e8 100644
--- a/source4/torture/local/irpc.c
+++ b/source4/torture/local/irpc.c
@@ -154,7 +154,6 @@ static void irpc_callback(struct irpc_request *irpc)
r->in.in_data, *r->out.out_data, r->in.in_data+1);
}
(*pong_count)++;
- talloc_free(irpc);
}
/*
diff --git a/source4/winbind/wb_async_helpers.c b/source4/winbind/wb_async_helpers.c
index cfbfe5f74f..8efd19f96b 100644
--- a/source4/winbind/wb_async_helpers.c
+++ b/source4/winbind/wb_async_helpers.c
@@ -141,7 +141,6 @@ static void finddcs_getdc(struct irpc_request *ireq)
talloc_get_type(ireq->async.private, struct finddcs_state);
state->ctx->status = irpc_call_recv(ireq);
- talloc_free(ireq);
if (!composite_is_ok(state->ctx)) return;
state->dcs[0].name = talloc_steal(state->dcs, state->r.out.dcname);
diff --git a/source4/winbind/wb_dom_info.c b/source4/winbind/wb_dom_info.c
index 5be28cc055..4f27243511 100644
--- a/source4/winbind/wb_dom_info.c
+++ b/source4/winbind/wb_dom_info.c
@@ -132,7 +132,6 @@ static void get_dom_info_recv_dcname(struct irpc_request *ireq)
state->ctx->status = irpc_call_recv(ireq);
- talloc_free(ireq);
if (!composite_is_ok(state->ctx)) return;
state->info->dc_name = talloc_steal(state->info, state->r.out.dcname);