1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

s3:winbind: talloc the static locator child

Next commits will use talloc_get_type_abort() to get the reference.

Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
This commit is contained in:
Samuel Cabrero
2023-12-12 15:49:07 +01:00
parent e3d0574d79
commit c35937054c
3 changed files with 23 additions and 7 deletions

View File

@ -1184,7 +1184,12 @@ static void winbindd_register_handlers(struct messaging_context *msg_ctx,
DBG_ERR("Unable to start idmap child: %s\n", nt_errstr(status));
exit(1);
}
init_locator_child();
status = init_locator_child(global_event_context());
if (NT_STATUS_IS_ERR(status)) {
DBG_ERR("Unable to start locator child: %s\n", nt_errstr(status));
exit(1);
}
smb_nscd_flush_user_cache();
smb_nscd_flush_group_cache();

View File

@ -27,19 +27,30 @@
#define DBGC_CLASS DBGC_WINBIND
static struct winbindd_child static_locator_child;
static struct winbindd_child *static_locator_child = NULL;
struct winbindd_child *locator_child(void)
{
return &static_locator_child;
return static_locator_child;
}
struct dcerpc_binding_handle *locator_child_handle(void)
{
return static_locator_child.binding_handle;
return static_locator_child->binding_handle;
}
void init_locator_child(void)
NTSTATUS init_locator_child(TALLOC_CTX *mem_ctx)
{
setup_child(NULL, &static_locator_child, "log.winbindd", "locator");
if (static_locator_child != NULL) {
DBG_ERR("locator child already allocated\n");
return NT_STATUS_INTERNAL_ERROR;
}
static_locator_child = talloc_zero(mem_ctx, struct winbindd_child);
if (static_locator_child == NULL) {
return NT_STATUS_NO_MEMORY;
}
setup_child(NULL, static_locator_child, "log.winbindd", "locator");
return NT_STATUS_OK;
}

View File

@ -404,7 +404,7 @@ bool lp_scan_idmap_domains(bool (*fn)(const char *domname,
/* The following definitions come from winbindd/winbindd_locator.c */
void init_locator_child(void);
NTSTATUS init_locator_child(TALLOC_CTX *mem_ctx);
struct winbindd_child *locator_child(void);
struct dcerpc_binding_handle *locator_child_handle(void);