diff options
-rw-r--r-- | source4/lib/messaging/messaging.c | 13 | ||||
-rw-r--r-- | source4/scripting/ejs/smbcalls_rpc.c | 1 | ||||
-rw-r--r-- | source4/torture/local/irpc.c | 1 | ||||
-rw-r--r-- | source4/winbind/wb_async_helpers.c | 1 | ||||
-rw-r--r-- | source4/winbind/wb_dom_info.c | 1 |
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); |