[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Tue Jan 4 04:10:01 MST 2011


The branch, master has been updated
       via  d2e93cc s3-waf: Fixed the static rpc service build.
       via  d4f5bf0 s3-smbd: Call the rpc service shutdown functions.
       via  8ece780 s3-build: Remove broken RPC modules support.
       via  9aa8763 s3-smbd: Call all the rpc services in the right order.
      from  0279422 s4-smbtorture: check driver_version equality as well.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit d2e93cce88b69bdf489984f34376ca30934684ad
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Dec 20 14:29:34 2010 +0100

    s3-waf: Fixed the static rpc service build.
    
    Autobuild-User: Andreas Schneider <asn at samba.org>
    Autobuild-Date: Tue Jan  4 12:09:48 CET 2011 on sn-devel-104

commit d4f5bf0c36e3d5a0a13d1a03e7c6fac956dbf954
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Dec 20 11:42:17 2010 +0100

    s3-smbd: Call the rpc service shutdown functions.

commit 8ece780d1b90125514a1afb3e145a413cc342b98
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Dec 20 11:24:07 2010 +0100

    s3-build: Remove broken RPC modules support.
    
    With the current module support for rpc we're not able to call the init
    functions with the rpc callback structure. So init functions and
    shutdown functions aren't called. These init functions are needed to
    setup pre requirements like migrating the printer databases and register
    at the endpoint mapper. The shutdown functions cleanup memory and
    deregister from the endpoint mapper.

commit 9aa876397601554df5f6b6e4b690755ed0eb405e
Author: Andreas Schneider <asn at samba.org>
Date:   Mon Dec 20 11:00:45 2010 +0100

    s3-smbd: Call all the rpc services in the right order.

-----------------------------------------------------------------------

Summary of changes:
 source3/Makefile.in              |   14 ++--
 source3/configure.in             |   17 ----
 source3/m4/aclocal.m4            |    8 --
 source3/rpc_server/wscript_build |  185 ++++++++++++++------------------------
 source3/smbd/server.c            |   46 +++++++++-
 source3/smbd/server_exit.c       |   34 +++++++
 source3/wscript                  |   30 ++----
 source3/wscript_build            |    4 +-
 8 files changed, 163 insertions(+), 175 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index 3e49869..cd0f376 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -249,13 +249,12 @@ SCRIPTS = $(srcdir)/script/smbtar $(builddir)/script/findsmb
 VFS_MODULES = @VFS_MODULES@
 PERFCOUNT_MODULES = @PERFCOUNT_MODULES@
 PDB_MODULES = @PDB_MODULES@
-RPC_MODULES = @RPC_MODULES@
 IDMAP_MODULES = @IDMAP_MODULES@
 CHARSET_MODULES = @CHARSET_MODULES@
 AUTH_MODULES = @AUTH_MODULES@
 NSS_INFO_MODULES = @NSS_INFO_MODULES@
 GPEXT_MODULES = @GPEXT_MODULES@
-MODULES = $(VFS_MODULES) $(PDB_MODULES) $(RPC_MODULES) $(IDMAP_MODULES) \
+MODULES = $(VFS_MODULES) $(PDB_MODULES) $(IDMAP_MODULES) \
           $(CHARSET_MODULES) $(AUTH_MODULES) $(NSS_INFO_MODULES) \
 	  $(GPEXT_MODULES) $(PERFCOUNT_MODULES)
 
@@ -729,8 +728,13 @@ RPC_PIPE_OBJ = rpc_server/srv_pipe.o rpc_server/srv_pipe_hnd.o \
 
 RPC_RPCECHO_OBJ = rpc_server/srv_echo_nt.o librpc/gen_ndr/srv_echo.o
 
-RPC_SERVER_OBJ = @RPC_STATIC@ $(RPC_PIPE_OBJ) $(NPA_TSTREAM_OBJ) \
-                 $(LIBCLI_SPOOLSS_OBJ) \
+RPC_SERVER_OBJ = $(RPC_LSARPC_OBJ) $(RPC_WINREG_OBJ) $(RPC_INITSHUTDOWN_OBJ) \
+		 $(RPC_DSSETUP_OBJ) $(RPC_WKSSVC_OBJ) $(RPC_SVCCTL_OBJ) \
+		 $(RPC_NTSVCS_OBJ) $(RPC_NETLOGON_OBJ) $(RPC_NETDFS_OBJ) \
+		 $(RPC_SRVSVC_OBJ) $(RPC_SPOOLSS_OBJ) $(RPC_EVENTLOG_OBJ) \
+		 $(RPC_SAMR_OBJ) $(RPC_RPCECHO_OBJ) \
+		 $(RPC_PIPE_OBJ) $(NPA_TSTREAM_OBJ) \
+		 $(LIBCLI_SPOOLSS_OBJ) \
 		 $(LIBCLI_WINREG_OBJ) \
 		 $(LIBCLI_SRVSVC_OBJ) \
 		 $(LIBCLI_LSA_OBJ) \
@@ -3164,7 +3168,6 @@ installbin:: all installdirs
 installmodules:: modules installdirs
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
-	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(NSSINFOLIBDIR) $(NSS_INFO_MODULES)
 	@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
@@ -3252,7 +3255,6 @@ uninstallbin::
 uninstallmodules::
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(VFSLIBDIR) $(VFS_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(PDBLIBDIR) $(PDB_MODULES)
-	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(RPCLIBDIR) $(RPC_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(IDMAPLIBDIR) $(IDMAP_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(CHARSETLIBDIR) $(CHARSET_MODULES)
 	@$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS_BIN) $(DESTDIR) $(prefix) $(AUTHLIBDIR) $(AUTH_MODULES)
diff --git a/source3/configure.in b/source3/configure.in
index ed99b17..ac43308 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -6745,23 +6745,6 @@ SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
 
-
-SMB_MODULE(rpc_lsarpc, \$(RPC_LSARPC_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_winreg, \$(RPC_WINREG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_wkssvc, \$(RPC_WKSSVC_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_netlogon, \$(RPC_NETLOGON_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_netdfs, \$(RPC_NETDFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_srvsvc, \$(RPC_SRVSVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_rpcecho, \$(RPC_RPCECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
-SMB_SUBSYSTEM(RPC,smbd/process.o)
-
 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
diff --git a/source3/m4/aclocal.m4 b/source3/m4/aclocal.m4
index b33658f..301445f 100644
--- a/source3/m4/aclocal.m4
+++ b/source3/m4/aclocal.m4
@@ -30,14 +30,6 @@ AC_DEFUN(SMB_MODULE,
 		AC_MSG_RESULT([shared])
 		[$6]
 		string_shared_modules="$string_shared_modules $1"
-	elif test x"$DEST" = xSTATIC && test x"$4" = xRPC; then
-		[init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z])  $1_init(NULL);"
-		[decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(const struct rpc_srv_callbacks *rpc_srv_cb);"
-		string_static_modules="$string_static_modules $1"
-		$4_STATIC="$$4_STATIC $2"
-		AC_SUBST($4_STATIC)
-		[$5]
-		AC_MSG_RESULT([static])
 	elif test x"$DEST" = xSTATIC; then
 		[init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z])  $1_init();"
 		[decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(void);"
diff --git a/source3/rpc_server/wscript_build b/source3/rpc_server/wscript_build
index 145e00e..d516d28 100644
--- a/source3/rpc_server/wscript_build
+++ b/source3/rpc_server/wscript_build
@@ -1,10 +1,11 @@
 #!/usr/bin/env python
 
-RPC_LSARPC_SRC = '''srv_lsa_nt.c'''
+RPC_LSARPC_SRC = '''srv_lsa_nt.c ../../librpc/gen_ndr/srv_lsa.c'''
 RPC_NETLOGON_SRC = '''srv_netlog_nt.c ../../librpc/gen_ndr/srv_netlogon.c'''
 RPC_SAMR_SRC = '''srv_samr_nt.c
                srv_samr_util.c
-               srv_samr_chgpasswd.c'''
+               srv_samr_chgpasswd.c
+               ../../librpc/gen_ndr/srv_samr.c'''
 RPC_INITSHUTDOWN_SRC = '''srv_initshutdown_nt.c ../../librpc/gen_ndr/srv_initshutdown.c'''
 RPC_WINREG_SRC = '''srv_winreg_nt.c ../../librpc/gen_ndr/srv_winreg.c'''
 RPC_DSSETUP_SRC = '''srv_dssetup_nt.c ../../librpc/gen_ndr/srv_dssetup.c'''
@@ -23,6 +24,18 @@ bld.SAMBA_SUBSYSTEM('rpc',
                     deps='RPC_PIPE_REGISTER',
                     vars=locals())
 
+bld.SAMBA_SUBSYSTEM('RPC_NCACN_NP',
+                    source='rpc_ncacn_np.c rpc_handles.c')
+
+bld.SAMBA_SUBSYSTEM('RPC_SERVICE',
+                    source='rpc_server.c')
+
+bld.SAMBA_SUBSYSTEM('RPC_CRYPTO',
+                    source='dcesrv_ntlmssp.c dcesrv_gssapi.c dcesrv_spnego.c')
+
+bld.SAMBA_SUBSYSTEM('RPC_PIPE_REGISTER',
+                    source='srv_pipe_register.c')
+
 bld.SAMBA_SUBSYSTEM('RPC_SAMR',
                     source=RPC_SAMR_SRC,
                     deps='PLAINTEXT_AUTH',
@@ -32,123 +45,63 @@ bld.SAMBA_SUBSYSTEM('RPC_LSARPC',
                     source=RPC_LSARPC_SRC,
                     vars=locals())
 
-bld.SAMBA_SUBSYSTEM('RPC_NCACN_NP',
-                    source='rpc_ncacn_np.c rpc_handles.c')
+bld.SAMBA_SUBSYSTEM('RPC_WINREG',
+                    source=RPC_WINREG_SRC,
+                    deps='REGFIO REG_API_REGF NDR_PERFCOUNT',
+                    vars=locals())
 
-bld.SAMBA_SUBSYSTEM('RPC_SERVICE',
-                    source='rpc_server.c')
+bld.SAMBA_SUBSYSTEM('RPC_INITSHUTDOWN',
+                    source=RPC_INITSHUTDOWN_SRC,
+                    vars=locals())
 
-bld.SAMBA_SUBSYSTEM('RPC_CRYPTO',
-                    source='dcesrv_ntlmssp.c dcesrv_gssapi.c dcesrv_spnego.c')
+bld.SAMBA_SUBSYSTEM('RPC_DSSETUP',
+                    source=RPC_DSSETUP_SRC,
+                    vars=locals())
 
-bld.SAMBA_SUBSYSTEM('RPC_PIPE_REGISTER',
-                    source='srv_pipe_register.c')
+bld.SAMBA_SUBSYSTEM('RPC_WKSSVC',
+                    source=RPC_WKSSVC_SRC,
+                    deps='LIBNET',
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_SVCCTL',
+                    source=RPC_SVCCTL_SRC,
+                    deps='SERVICES',
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_NTSVCS',
+                    source=RPC_NTSVCS_SRC,
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_NETLOGON',
+                    source=RPC_NETLOGON_SRC,
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_NETDFS',
+                    source=RPC_NETDFS_SRC,
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_SRVSVC',
+                    source=RPC_SRVSVC_SRC,
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_SPOOLSS',
+                    source=RPC_SPOOLSS_SRC,
+                    deps='cups PRINTING PRINTBACKEND RPCCLI_WINREG',
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_EVENTLOG',
+                    source=RPC_EVENTLOG_SRC,
+                    deps='LIBEVENTLOG',
+                    vars=locals())
+
+bld.SAMBA_SUBSYSTEM('RPC_RPCECHO',
+                    source=RPC_RPCECHO_SRC,
+                    vars=locals())
 
 bld.SAMBA_SUBSYSTEM('RPC_SERVER',
                     source='srv_pipe_hnd.c srv_pipe.c',
-                    deps='RPC_NCACN_NP RPC_SERVICE RPC_CRYPTO')
-
-bld.SAMBA_MODULE('rpc_lsarpc',
-                 subsystem='rpc',
-                 source='../../librpc/gen_ndr/srv_lsa.c',
-                 deps='RPC_LSARPC',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_lsarpc'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_lsarpc'))
-
-bld.SAMBA_MODULE('rpc_samr',
-                 subsystem='rpc',
-                 source='../../librpc/gen_ndr/srv_samr.c',
-                 deps='RPC_SAMR',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_samr'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_samr'))
-
-bld.SAMBA_MODULE('rpc_winreg',
-                 subsystem='rpc',
-                 source=RPC_WINREG_SRC,
-                 deps='REGFIO REG_API_REGF NDR_PERFCOUNT',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_winreg'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_winreg'))
-
-bld.SAMBA_MODULE('rpc_initshutdown',
-                 subsystem='rpc',
-                 source=RPC_INITSHUTDOWN_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_initshutdown'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_initshutdown'))
-
-bld.SAMBA_MODULE('rpc_dssetup',
-                 subsystem='rpc',
-                 source=RPC_DSSETUP_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_dssetup'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_dssetup'))
-
-bld.SAMBA_MODULE('rpc_wkssvc',
-                 subsystem='rpc',
-                 source=RPC_WKSSVC_SRC,
-                 deps='LIBNET',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_wkssvc'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_wkssvc'))
-
-bld.SAMBA_MODULE('rpc_svcctl',
-                 subsystem='rpc',
-                 source=RPC_SVCCTL_SRC,
-                 deps='SERVICES',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_svcctl'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_svcctl'))
-
-bld.SAMBA_MODULE('rpc_ntsvcs',
-                 subsystem='rpc',
-                 source=RPC_NTSVCS_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_ntsvcs'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_ntsvcs'))
-
-bld.SAMBA_MODULE('rpc_netlogon',
-                 subsystem='rpc',
-                 source=RPC_NETLOGON_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_netlogon'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_netlogon'))
-
-bld.SAMBA_MODULE('rpc_netdfs',
-                 subsystem='rpc',
-                 source=RPC_NETDFS_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_netdfs'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_netdfs'))
-
-bld.SAMBA_MODULE('rpc_srvsvc',
-                 subsystem='rpc',
-                 source=RPC_SRVSVC_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_srvsvc'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_srvsvc'))
-
-bld.SAMBA_MODULE('rpc_spoolss',
-                 subsystem='rpc',
-                 source=RPC_SPOOLSS_SRC,
-                 deps='cups PRINTING PRINTBACKEND RPCCLI_WINREG',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_spoolss'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_spoolss'))
-
-bld.SAMBA_MODULE('rpc_eventlog',
-                 subsystem='rpc',
-                 source=RPC_EVENTLOG_SRC,
-                 deps='LIBEVENTLOG',
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_eventlog'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_eventlog'))
-
-bld.SAMBA_MODULE('rpc_rpcecho',
-                 subsystem='rpc',
-                 source=RPC_RPCECHO_SRC,
-                 init_function='',
-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_rpcecho'),
-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_rpcecho'))
+                    deps='''RPC_NCACN_NP RPC_SERVICE RPC_CRYPTO
+                          RPC_SAMR RPC_LSARPC RPC_WINREG RPC_INITSHUTDOWN
+                          RPC_DSSETUP RPC_WKSSVC RPC_SVCCTL RPC_NTSVCS
+                          RPC_NETLOGON RPC_NETDFS RPC_SRVSVC RPC_SPOOLSS
+                          RPC_EVENTLOG RPC_RPCECHO RPC_SERVER''')
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 3790342..1b06851 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -50,8 +50,6 @@
 
 #include "printing/nt_printing_migrate.h"
 
-static_decl_rpc;
-
 #ifdef WITH_DFS
 extern int dcelogin_atmost_once;
 #endif /* WITH_DFS */
@@ -1188,16 +1186,54 @@ extern void build_options(bool screen);
 	spoolss_cb.shutdown = spoolss_shutdown_cb;
 	spoolss_cb.private_data = smbd_server_conn->msg_ctx;
 
-	/* Spoolss depends on a winreg pipe, so start it first. */
+	/*
+	 * TODO: Create a dependency tree, so that all services are started
+	 * in the right order.
+	 */
+	if (!NT_STATUS_IS_OK(rpc_lsarpc_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_samr_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_netlogon_init(NULL))) {
+		exit(1);
+	}
+
 	if (!NT_STATUS_IS_OK(rpc_winreg_init(NULL))) {
 		exit(1);
 	}
+	if (!NT_STATUS_IS_OK(rpc_srvsvc_init(NULL))) {
+		exit(1);
+	}
 
 	if (!NT_STATUS_IS_OK(rpc_spoolss_init(&spoolss_cb))) {
 		exit(1);
 	}
-
-	static_init_rpc;
+	if (!NT_STATUS_IS_OK(rpc_svcctl_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_ntsvcs_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_eventlog_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_initshutdown_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_netdfs_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_rpcecho_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_dssetup_init(NULL))) {
+		exit(1);
+	}
+	if (!NT_STATUS_IS_OK(rpc_wkssvc_init(NULL))) {
+		exit(1);
+	}
 
 	/* Publish nt printers, this requires a working winreg pipe */
 	reload_printers(smbd_messaging_context());
diff --git a/source3/smbd/server_exit.c b/source3/smbd/server_exit.c
index 57fec8d..65151a1 100644
--- a/source3/smbd/server_exit.c
+++ b/source3/smbd/server_exit.c
@@ -26,6 +26,21 @@
 #include "smbd/globals.h"
 #include "librpc/gen_ndr/messaging.h"
 
+#include "../librpc/gen_ndr/srv_dfs.h"
+#include "../librpc/gen_ndr/srv_dssetup.h"
+#include "../librpc/gen_ndr/srv_echo.h"
+#include "../librpc/gen_ndr/srv_eventlog.h"
+#include "../librpc/gen_ndr/srv_initshutdown.h"
+#include "../librpc/gen_ndr/srv_lsa.h"
+#include "../librpc/gen_ndr/srv_netlogon.h"
+#include "../librpc/gen_ndr/srv_ntsvcs.h"
+#include "../librpc/gen_ndr/srv_samr.h"
+#include "../librpc/gen_ndr/srv_spoolss.h"
+#include "../librpc/gen_ndr/srv_srvsvc.h"
+#include "../librpc/gen_ndr/srv_svcctl.h"
+#include "../librpc/gen_ndr/srv_winreg.h"
+#include "../librpc/gen_ndr/srv_wkssvc.h"
+
 static struct files_struct *log_writeable_file_fn(
 	struct files_struct *fsp, void *private_data)
 {
@@ -113,6 +128,25 @@ static void exit_server_common(enum server_exit_reason how,
 	}
 #endif
 
+	if (am_parent) {
+		rpc_wkssvc_shutdown();
+		rpc_dssetup_shutdown();
+		rpc_rpcecho_shutdown();
+		rpc_netdfs_shutdown();
+		rpc_initshutdown_shutdown();
+		rpc_eventlog_shutdown();
+		rpc_ntsvcs_shutdown();
+		rpc_svcctl_shutdown();
+		rpc_spoolss_shutdown();
+
+		rpc_srvsvc_shutdown();
+		rpc_winreg_shutdown();
+
+		rpc_netlogon_shutdown();
+		rpc_samr_shutdown();
+		rpc_lsarpc_shutdown();
+	}
+
 	locking_end();
 	printing_end();
 
diff --git a/source3/wscript b/source3/wscript
index 684461f..dfb9929 100644
--- a/source3/wscript
+++ b/source3/wscript
@@ -335,10 +335,8 @@ return acl_get_perm_np(permset_d, perm);
                     headers='sys/types.h sys/statfs.h',
                     execute=True)
 
-    default_static_modules=TO_LIST('''pdb_smbpasswd pdb_tdbsam pdb_wbc_sam pdb_ldap rpc_lsarpc rpc_samr
-                                      rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl
-                                      rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss
-                                      rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server
+    default_static_modules=TO_LIST('''pdb_smbpasswd pdb_tdbsam pdb_wbc_sam pdb_ldap
+                                      auth_sam auth_unix auth_winbind auth_wbc auth_server
                                       auth_domain auth_builtin auth_netlogond vfs_default
                                       nss_info_template idmap_ldap idmap_tdb idmap_passdb
                                       idmap_nss''')
@@ -353,7 +351,7 @@ return acl_get_perm_np(permset_d, perm);
                                       vfs_time_audit idmap_autorid''')
 
     if Options.options.developer:
-        default_static_modules.extend(TO_LIST('rpc_rpcecho pdb_ads'))
+        default_static_modules.extend(TO_LIST('pdb_ads'))
         default_shared_modules.extend(TO_LIST('charset_weird perfcount_test'))
 
     if Options.options.with_acl_support and conf.CONFIG_SET('HAVE_POSIX_ACLS'):
@@ -388,7 +386,7 @@ return acl_get_perm_np(permset_d, perm);
     static_list = {}
     shared_list = {}
 
-    prefixes = ['vfs', 'pdb', 'rpc', 'auth', 'nss_info', 'charset', 'idmap', 'gpext', 'perfcount']
+    prefixes = ['vfs', 'pdb', 'auth', 'nss_info', 'charset', 'idmap', 'gpext', 'perfcount']
     conf.env['MODULE_PREFIXES'] = prefixes
     for p in prefixes:
         for m in final_static_modules:
@@ -409,20 +407,12 @@ return acl_get_perm_np(permset_d, perm);
         conf.env[shared_env] = []
         if p in static_list:
             decl_list=""
-            if p == "rpc":
-                for entry in static_list[p]:
-                    decl_list += "extern NTSTATUS %s_init(const struct rpc_srv_callbacks *rpc_srv_cb); " % entry
-                    conf.env[static_env].append('%s' % entry)
-                decl_list = decl_list.rstrip()
-                conf.DEFINE('static_decl_%s' % p, decl_list)
-                conf.DEFINE('static_init_%s' % p, '{ %s_init(NULL); }' % '_init(NULL);  '.join(static_list[p]))
-            else:
-                for entry in static_list[p]:
-                    decl_list += "extern NTSTATUS %s_init(void); " % entry
-                    conf.env[static_env].append('%s' % entry)
-                decl_list = decl_list.rstrip()
-                conf.DEFINE('static_decl_%s' % p, decl_list)
-                conf.DEFINE('static_init_%s' % p, '{ %s_init(); }' % '_init();  '.join(static_list[p]))
+            for entry in static_list[p]:
+                decl_list += "extern NTSTATUS %s_init(void); " % entry
+                conf.env[static_env].append('%s' % entry)
+            decl_list = decl_list.rstrip()
+            conf.DEFINE('static_decl_%s' % p, decl_list)
+            conf.DEFINE('static_init_%s' % p, '{ %s_init(); }' % '_init();  '.join(static_list[p]))
         else:
             conf.DEFINE('static_decl_%s' % p, '')
             conf.DEFINE('static_init_%s' % p, '{}')
diff --git a/source3/wscript_build b/source3/wscript_build
index a5cf898..21da069 100644


-- 
Samba Shared Repository


More information about the samba-cvs mailing list