diff options
| -rw-r--r-- | source4/lib/messaging/irpc.h | 1 | ||||
| -rw-r--r-- | source4/lib/messaging/messaging.c | 7 | 
2 files changed, 8 insertions, 0 deletions
diff --git a/source4/lib/messaging/irpc.h b/source4/lib/messaging/irpc.h index 4b497959ee..2a76461954 100644 --- a/source4/lib/messaging/irpc.h +++ b/source4/lib/messaging/irpc.h @@ -35,6 +35,7 @@ struct irpc_message {  	struct irpc_header header;  	struct ndr_pull *ndr;  	bool defer_reply; +	bool no_reply;  	struct messaging_context *msg_ctx;  	struct irpc_list *irpc;  	void *data; diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c index ae3f908060..c33db825fc 100644 --- a/source4/lib/messaging/messaging.c +++ b/source4/lib/messaging/messaging.c @@ -776,6 +776,7 @@ static void irpc_handler_request(struct messaging_context *msg_ctx,  	/* make the call */  	m->private_data= i->private_data;  	m->defer_reply = false; +	m->no_reply    = false;  	m->msg_ctx     = msg_ctx;  	m->irpc        = i;  	m->data        = r; @@ -783,6 +784,12 @@ static void irpc_handler_request(struct messaging_context *msg_ctx,  	m->header.status = i->fn(m, r); +	if (m->no_reply) { +		/* the server function won't ever be replying to this request */ +		talloc_free(m); +		return; +	} +  	if (m->defer_reply) {  		/* the server function has asked to defer the reply to later */  		talloc_steal(msg_ctx, m);  | 
