1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

s4:messaging: make sure only imessaging_client_init() can be used with a wrapper tevent_context wrapper

imessaging_client_init() can be used with a wrapper tevent_context,
but only if a global messaging_dgm_ref() already exist.

All other uses of imessaging_init() and imessaging_client_init()
require a raw tevent_context.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>

Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Thu Jul 12 02:23:37 CEST 2018 on sn-devel-144
This commit is contained in:
Stefan Metzmacher 2018-05-18 16:28:47 +02:00 committed by Ralph Boehme
parent a08ab29400
commit e186d6a06b

View File

@ -319,7 +319,7 @@ NTSTATUS imessaging_reinit_all(void)
/*
create the listening socket and setup the dispatcher
*/
struct imessaging_context *imessaging_init(TALLOC_CTX *mem_ctx,
static struct imessaging_context *imessaging_init_internal(TALLOC_CTX *mem_ctx,
struct loadparm_context *lp_ctx,
struct server_id server_id,
struct tevent_context *ev)
@ -573,6 +573,30 @@ static void imessaging_dgm_recv(struct tevent_context *ev,
}
}
struct imessaging_context *imessaging_init(TALLOC_CTX *mem_ctx,
struct loadparm_context *lp_ctx,
struct server_id server_id,
struct tevent_context *ev)
{
if (ev == NULL) {
return NULL;
}
if (tevent_context_is_wrapper(ev)) {
/*
* This is really a programmer error!
*
* The main/raw tevent context should
* have been registered first!
*/
DBG_ERR("Should not be used with a wrapper tevent context\n");
errno = EINVAL;
return NULL;
}
return imessaging_init_internal(mem_ctx, lp_ctx, server_id, ev);
}
/*
A hack, for the short term until we get 'client only' messaging in place
*/
@ -589,7 +613,7 @@ struct imessaging_context *imessaging_client_init(TALLOC_CTX *mem_ctx,
/* This is because we are not in the s3 serverid database */
id.unique_id = SERVERID_UNIQUE_ID_NOT_TO_VERIFY;
return imessaging_init(mem_ctx, lp_ctx, id, ev);
return imessaging_init_internal(mem_ctx, lp_ctx, id, ev);
}
/*
a list of registered irpc server functions