diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2004-11-06 23:23:15 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:05:36 -0500 |
commit | 71db46ea665606384f2be1be708c74c97c9adfb2 (patch) | |
tree | 24c84e12f4fc925f3ec1e69348493d7222df1e44 /source4/libcli | |
parent | b012ab557b8f8a2f58dfbbe8b7818f3e6d8cf38f (diff) | |
download | samba-71db46ea665606384f2be1be708c74c97c9adfb2.tar.gz samba-71db46ea665606384f2be1be708c74c97c9adfb2.tar.bz2 samba-71db46ea665606384f2be1be708c74c97c9adfb2.zip |
r3586: Fix some of the issues with the module init functions.
Both subsystems and modules can now have init functions, which can be
specified in .mk files (INIT_FUNCTION = ...)
The build system will define :
- SUBSYSTEM_init_static_modules that calls the init functions of all statically compiled modules. Failing to load will generate an error which is not fatal
- BINARY_init_subsystems that calls the init functions (if defined) for the subsystems the binary depends on
This removes the hack with the "static bool Initialised = " and the
"lazy_init" functions
(This used to be commit 7a8244761bfdfdfb48f8264d76951ebdfbf7bd8a)
Diffstat (limited to 'source4/libcli')
-rw-r--r-- | source4/libcli/auth/gensec.c | 25 | ||||
-rw-r--r-- | source4/libcli/auth/gensec.mk | 4 |
2 files changed, 10 insertions, 19 deletions
diff --git a/source4/libcli/auth/gensec.c b/source4/libcli/auth/gensec.c index aab1928687..6bc33ab66d 100644 --- a/source4/libcli/auth/gensec.c +++ b/source4/libcli/auth/gensec.c @@ -120,11 +120,6 @@ const char **gensec_security_oids(TALLOC_CTX *mem_ctx, const char *skip) */ static NTSTATUS gensec_start(TALLOC_CTX *mem_ctx, struct gensec_security **gensec_security) { - /* awaiting a correct fix from metze */ - if (!gensec_init()) { - return NT_STATUS_INTERNAL_ERROR; - } - (*gensec_security) = talloc_p(mem_ctx, struct gensec_security); if (!(*gensec_security)) { return NT_STATUS_NO_MEMORY; @@ -806,25 +801,17 @@ const struct gensec_critical_sizes *gensec_interface_version(void) /* initialise the GENSEC subsystem */ -BOOL gensec_init(void) +NTSTATUS gensec_init(void) { - static BOOL initialised; - NTSTATUS status; - - /* this is *completely* the wrong way to do this */ - if (initialised) { - return True; - } - - status = register_subsystem("gensec", gensec_register); + NTSTATUS status = register_subsystem("gensec", gensec_register); if (!NT_STATUS_IS_OK(status)) { - return False; + return status; } - static_init_gensec; + gensec_init_static_modules; + gensec_dcerpc_schannel_init(); - initialised = True; DEBUG(3,("GENSEC subsystem version %d initialised\n", GENSEC_INTERFACE_VERSION)); - return True; + return NT_STATUS_OK; } diff --git a/source4/libcli/auth/gensec.mk b/source4/libcli/auth/gensec.mk index bab79ea2fd..1372a91ea2 100644 --- a/source4/libcli/auth/gensec.mk +++ b/source4/libcli/auth/gensec.mk @@ -1,6 +1,7 @@ ################################# # Start SUBSYSTEM GENSEC [SUBSYSTEM::GENSEC] +INIT_FUNCTION = gensec_init INIT_OBJ_FILES = libcli/auth/gensec.o REQUIRED_SUBSYSTEMS = \ SCHANNELDB @@ -10,6 +11,7 @@ REQUIRED_SUBSYSTEMS = \ ################################################ # Start MODULE gensec_krb5 [MODULE::gensec_krb5] +INIT_FUNCTION = gensec_krb5_init INIT_OBJ_FILES = libcli/auth/gensec_krb5.o ADD_OBJ_FILES = \ libcli/auth/clikrb5.o \ @@ -24,6 +26,7 @@ REQUIRED_LIBRARIES = KRB5 ################################################ # Start MODULE gensec_spnego [MODULE::gensec_spnego] +INIT_FUNCTION = gensec_spnego_init INIT_OBJ_FILES = libcli/auth/spnego.o ADD_OBJ_FILES = \ libcli/auth/spnego_parse.o @@ -34,6 +37,7 @@ REQUIRED_SUBSYSTEMS = GENSEC ################################################ # Start MODULE gensec_ntlmssp [MODULE::gensec_ntlmssp] +INIT_FUNCTION = gensec_ntlmssp_init INIT_OBJ_FILES = libcli/auth/gensec_ntlmssp.o ADD_OBJ_FILES = \ libcli/auth/ntlmssp.o \ |