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:
parent
a08ab29400
commit
e186d6a06b
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user