[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-995-g2e1b913

Michael Adam ma at sernet.de
Sun Apr 20 22:50:57 GMT 2008


Michael Adam wrote:
> Hi Metze,
> 
> the erlier creation of the messaging contexts,
> along with the non-include-expanding initial
> lp_load makes make test fail for me as non-root user
> in a setup where i have previously run smbd/nmbd/winbindd
> from the install directory as set per configure.
> 
> this is due to the fact that in our make test configs,
> the lockdir (etc) are set in the common.conf include,
> which is not expanded the first time...
> 
> I am currently thinking of how to circumvent this best.

as discussed:

1bb28bc1d8e83d174cd171e9d96f22ac524187c3
bba04a8fba6fd5cf62578733cfdabea590e8ff51

> Michael
> 
> Stefan Metzmacher wrote:
> > The branch, v3-2-test has been updated
> >        via  2e1b9130635235efdbf49d0b92a43b342114246c (commit)
> >        via  8e9fdef792e612e414444e7714a2fd4513892248 (commit)
> >        via  056ff094ad2c59992cfdb8b29696c08dab4113d7 (commit)
> >        via  f68829ff14c457bfa98cb2ef9e8ec2e1a0b1d64d (commit)
> >        via  9adb675a86e81c90e2bddfe984b5ac8f201fec75 (commit)
> >        via  658d8475336c4397e0dad341f216baf9e1eb6aaf (commit)
> >        via  425b3513a45cf98b53235470a3536be86d56d1c2 (commit)
> >        via  6b5c76bf1e880ec60d6b044c58115940549049e5 (commit)
> >        via  5f6c3a4f6db68c985884cbe9401a4dbe515f756b (commit)
> >        via  16d295d466eb18e3bccce6fb26d53012d5f2c3e8 (commit)
> >        via  6f67c4ddf8101b1d06889055e3767a6ce0db360c (commit)
> >        via  259786980a3a65fa67a4de12a65d33095fa53ce2 (commit)
> >       from  e1abff301449ad528194206fd953670057eaa12d (commit)
> > 
> > http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
> > 
> > 
> > - Log -----------------------------------------------------------------
> > commit 2e1b9130635235efdbf49d0b92a43b342114246c
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 10:57:16 2008 +0200
> > 
> >     winbindd: create the messaging conntext earlier
> >     
> >     metze
> > 
> > commit 8e9fdef792e612e414444e7714a2fd4513892248
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:02:42 2008 +0200
> > 
> >     winbindd: call reinit_after_fork() in the child processes
> >     
> >     metze
> > 
> > commit 056ff094ad2c59992cfdb8b29696c08dab4113d7
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 10:50:27 2008 +0200
> > 
> >     nmbd: create the messaging conntext earlier
> >     
> >     metze
> > 
> > commit f68829ff14c457bfa98cb2ef9e8ec2e1a0b1d64d
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 10:38:21 2008 +0200
> > 
> >     nmbd: call reinit_after_fork() in all needed cases
> >     
> >     metze
> > 
> > commit 9adb675a86e81c90e2bddfe984b5ac8f201fec75
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:48:44 2008 +0200
> > 
> >     printing: call reinit_after_fork() in the backgroundqueue process
> >     
> >     metze
> > 
> > commit 658d8475336c4397e0dad341f216baf9e1eb6aaf
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 10:57:45 2008 +0200
> > 
> >     smbd: create the messaging conntext earlier
> >     
> >     metze
> > 
> > commit 425b3513a45cf98b53235470a3536be86d56d1c2
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:01:59 2008 +0200
> > 
> >     smbd: call reinit_after_fork() in the needed places
> >     
> >     metze
> > 
> > commit 6b5c76bf1e880ec60d6b044c58115940549049e5
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Fri Apr 18 10:20:01 2008 +0200
> > 
> >     loadparm: make it possible to just load the config without following "include =" statements
> >     
> >     metze
> > 
> > commit 5f6c3a4f6db68c985884cbe9401a4dbe515f756b
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 10:36:15 2008 +0200
> > 
> >     util: add reinit_after_fork() function
> >     
> >     metze
> > 
> > commit 16d295d466eb18e3bccce6fb26d53012d5f2c3e8
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:50:13 2008 +0200
> > 
> >     smbd: merge "smbd:backgroundqueue=no" option from the v3-0-ctdb tree
> >     
> >     metze
> > 
> > commit 6f67c4ddf8101b1d06889055e3767a6ce0db360c
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:18:50 2008 +0200
> > 
> >     messages_ctdbd: autocreate a ctdb connection, this will fix segfaults in the client tools
> >     
> >     metze
> > 
> > commit 259786980a3a65fa67a4de12a65d33095fa53ce2
> > Author: Stefan Metzmacher <metze at samba.org>
> > Date:   Tue Apr 15 01:18:06 2008 +0200
> > 
> >     messages_ctdbd: make sure a ctdbd connection is only used in the process that created it
> >     
> >     metze
> > 
> > -----------------------------------------------------------------------
> > 
> > Summary of changes:
> >  source/lib/messages_ctdbd.c     |   30 +++++++++++++++++++++-
> >  source/lib/util.c               |   30 ++++++++++++++++++++++
> >  source/nmbd/asyncdns.c          |    5 +++
> >  source/nmbd/nmbd.c              |   20 ++++++++++++--
> >  source/param/loadparm.c         |   53 +++++++++++++++++++++++++++++++-------
> >  source/printing/printing.c      |    5 +++
> >  source/smbd/server.c            |   49 +++++++++++++++++-------------------
> >  source/winbindd/winbindd.c      |   24 ++++++++++++-----
> >  source/winbindd/winbindd_cm.c   |    5 +--
> >  source/winbindd/winbindd_dual.c |    5 +--
> >  10 files changed, 173 insertions(+), 53 deletions(-)
> > 
> > 
> > Changeset truncated at 500 lines:
> > 
> > diff --git a/source/lib/messages_ctdbd.c b/source/lib/messages_ctdbd.c
> > index f1a02e6..a01c5e0 100644
> > --- a/source/lib/messages_ctdbd.c
> > +++ b/source/lib/messages_ctdbd.c
> > @@ -35,10 +35,36 @@ struct messaging_ctdbd_context {
> >   * This is a Samba3 hack/optimization. Routines like process_exists need to
> >   * talk to ctdbd, and they don't get handed a messaging context.
> >   */
> > -struct ctdbd_connection *global_ctdbd_connection;
> > +static struct ctdbd_connection *global_ctdbd_connection;
> > +static int global_ctdb_connection_pid;
> >  
> >  struct ctdbd_connection *messaging_ctdbd_connection(void)
> >  {
> > +	if (global_ctdb_connection_pid == 0 &&
> > +	    global_ctdbd_connection == NULL) {
> > +		struct event_context *ev;
> > +		struct messaging_context *msg;
> > +
> > +		ev = event_context_init(NULL);
> > +		if (!msg) {
> > +			DEBUG(0,("event_context_init failed\n"));
> > +		}
> > +
> > +		msg = messaging_init(NULL, procid_self(), ev);
> > +		if (!msg) {
> > +			DEBUG(0,("messaging_init failed\n"));
> > +		}
> > +
> > +		db_tdb2_setup_messaging(msg, false);
> > +	}
> > +
> > +	if (global_ctdb_connection_pid != getpid()) {
> > +		DEBUG(0,("messaging_ctdbd_connection():"
> > +			 "valid for pid[%d] but it's [%d]\n",
> > +			 global_ctdb_connection_pid, getpid()));
> > +		smb_panic("messaging_ctdbd_connection() invalid process\n");
> > +	}
> > +
> >  	return global_ctdbd_connection;
> >  }
> >  
> > @@ -66,6 +92,7 @@ static int messaging_ctdbd_destructor(struct messaging_ctdbd_context *ctx)
> >  	/*
> >  	 * The global connection just went away
> >  	 */
> > +	global_ctdb_connection_pid = 0;
> >  	global_ctdbd_connection = NULL;
> >  	return 0;
> >  }
> > @@ -107,6 +134,7 @@ NTSTATUS messaging_ctdbd_init(struct messaging_context *msg_ctx,
> >  		return status;
> >  	}
> >  
> > +	global_ctdb_connection_pid = getpid();
> >  	global_ctdbd_connection = ctx->conn;
> >  	talloc_set_destructor(ctx, messaging_ctdbd_destructor);
> >  
> > diff --git a/source/lib/util.c b/source/lib/util.c
> > index b52cc69..db0da54 100644
> > --- a/source/lib/util.c
> > +++ b/source/lib/util.c
> > @@ -990,6 +990,36 @@ void become_daemon(bool Fork, bool no_process_group)
> >  				  attach it to the logfile */
> >  }
> >  
> > +bool reinit_after_fork(struct messaging_context *msg_ctx)
> > +{
> > +	NTSTATUS status;
> > +
> > +	/* Reset the state of the random
> > +	 * number generation system, so
> > +	 * children do not get the same random
> > +	 * numbers as each other */
> > +	set_need_random_reseed();
> > +
> > +	/* tdb needs special fork handling */
> > +	if (tdb_reopen_all(1) == -1) {
> > +		DEBUG(0,("tdb_reopen_all failed.\n"));
> > +		return false;
> > +	}
> > +
> > +	/*
> > +	 * For clustering, we need to re-init our ctdbd connection after the
> > +	 * fork
> > +	 */
> > +	status = messaging_reinit(msg_ctx);
> > +	if (!NT_STATUS_IS_OK(status)) {
> > +		DEBUG(0,("messaging_reinit() failed: %s\n",
> > +			 nt_errstr(status)));
> > +		return false;
> > +	}
> > +
> > +	return true;
> > +}
> > +
> >  /****************************************************************************
> >   Put up a yes/no prompt.
> >  ****************************************************************************/
> > diff --git a/source/nmbd/asyncdns.c b/source/nmbd/asyncdns.c
> > index 5e55659..0329491 100644
> > --- a/source/nmbd/asyncdns.c
> > +++ b/source/nmbd/asyncdns.c
> > @@ -164,6 +164,11 @@ void start_async_dns(void)
> >  	CatchSignal(SIGHUP, SIG_IGN);
> >          CatchSignal(SIGTERM, SIGNAL_CAST sig_term );
> >  
> > +	if (!reinit_after_fork(nmbd_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> > +		smb_panic("reinit_after_fork() failed");
> > +	}
> > +
> >  	asyncdns_process();
> >  }
> >  
> > diff --git a/source/nmbd/nmbd.c b/source/nmbd/nmbd.c
> > index 01fdbbc..9396219 100644
> > --- a/source/nmbd/nmbd.c
> > +++ b/source/nmbd/nmbd.c
> > @@ -762,6 +762,8 @@ static bool open_sockets(bool isdaemon, int port)
> >  	};
> >  	TALLOC_CTX *frame = talloc_stackframe(); /* Setup tos. */
> >  
> > +	db_tdb2_setup_messaging(NULL, false);
> > +
> >  	load_case_tables();
> >  
> >  	global_nmb_port = NMB_PORT;
> > @@ -847,7 +849,16 @@ static bool open_sockets(bool isdaemon, int port)
> >  	DEBUG(0,("nmbd version %s started.\n", SAMBA_VERSION_STRING));
> >  	DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
> >  
> > -	db_tdb2_setup_messaging(NULL, false);
> > +	if (!lp_load_initial_only(get_dyn_CONFIGFILE())) {
> > +		DEBUG(0, ("error opening config file\n"));
> > +		exit(1);
> > +	}
> > +
> > +	if (nmbd_messaging_context() == NULL) {
> > +		return 1;
> > +	}
> > +
> > +	db_tdb2_setup_messaging(nmbd_messaging_context(), true);
> >  
> >  	if ( !reload_nmbd_services(False) )
> >  		return(-1);
> > @@ -901,6 +912,11 @@ static bool open_sockets(bool isdaemon, int port)
> >  
> >  	pidfile_create("nmbd");
> >  
> > +	if (!reinit_after_fork(nmbd_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> > +		exit(1);
> > +	}
> > +
> >  	/* get broadcast messages */
> >  	claim_connection(NULL,"",FLAG_MSG_GENERAL|FLAG_MSG_DBWRAP);
> >  
> > @@ -918,8 +934,6 @@ static bool open_sockets(bool isdaemon, int port)
> >  	messaging_register(nmbd_messaging_context(), NULL,
> >  			   MSG_SEND_PACKET, msg_nmbd_send_packet);
> >  
> > -	db_tdb2_setup_messaging(nmbd_messaging_context(), true);
> > -
> >  	TimeInit();
> >  
> >  	DEBUG( 3, ( "Opening sockets %d\n", global_nmb_port ) );
> > diff --git a/source/param/loadparm.c b/source/param/loadparm.c
> > index 9595ebd..84e8c1a 100644
> > --- a/source/param/loadparm.c
> > +++ b/source/param/loadparm.c
> > @@ -6727,11 +6727,16 @@ static bool handle_netbios_aliases(int snum, const char *pszParmValue, char **pt
> >  /***************************************************************************
> >   Handle the include operation.
> >  ***************************************************************************/
> > +static bool bNoIncludes = false;
> >  
> >  static bool handle_include(int snum, const char *pszParmValue, char **ptr)
> >  {
> >  	char *fname;
> >  
> > +	if (bNoIncludes) {
> > +		return true;
> > +	}
> > +
> >  	if (strequal(pszParmValue, INCLUDE_REGISTRY_NAME)) {
> >  		if (bInGlobalSection) {
> >  			return process_registry_globals();
> > @@ -8651,11 +8656,12 @@ bool lp_is_in_client(void)
> >   False on failure.
> >  ***************************************************************************/
> >  
> > -bool lp_load(const char *pszFname,
> > -             bool global_only,
> > -             bool save_defaults,
> > -	     bool add_ipc,
> > -             bool initialize_globals)
> > +bool lp_load_ex(const char *pszFname,
> > +		bool global_only,
> > +		bool save_defaults,
> > +		bool add_ipc,
> > +		bool initialize_globals,
> > +		bool no_includes)
> >  {
> >  	char *n2 = NULL;
> >  	bool bRetval;
> > @@ -8663,10 +8669,11 @@ bool lp_load(const char *pszFname,
> >  
> >  	bRetval = False;
> >  
> > -	DEBUG(3, ("lp_load: refreshing parameters\n"));
> > +	DEBUG(3, ("lp_load_ex: refreshing parameters\n"));
> >  
> >  	bInGlobalSection = True;
> >  	bGlobalOnly = global_only;
> > +	bNoIncludes = no_includes;
> >  
> >  	init_globals(! initialize_globals);
> >  	debug_init();
> > @@ -8694,7 +8701,7 @@ bool lp_load(const char *pszFname,
> >  					current_user_info.domain,
> >  					pszFname);
> >  		if (!n2) {
> > -			smb_panic("lp_load: out of memory");
> > +			smb_panic("lp_load_ex: out of memory");
> >  		}
> >  
> >  		add_to_file_list(pszFname, n2);
> > @@ -8722,12 +8729,12 @@ bool lp_load(const char *pszFname,
> >  			 */
> >  			config_backend = CONFIG_BACKEND_REGISTRY;
> >  			/* start over */
> > -			DEBUG(1, ("lp_load: changing to config backend "
> > +			DEBUG(1, ("lp_load_ex: changing to config backend "
> >  				  "registry\n"));
> >  			init_globals(false);
> >  			lp_kill_all_services();
> > -			return lp_load(pszFname, global_only, save_defaults,
> > -				       add_ipc, initialize_globals);
> > +			return lp_load_ex(pszFname, global_only, save_defaults,
> > +				          add_ipc, initialize_globals, no_includes);
> >  		}
> >  	} else if (lp_config_backend_is_registry()) {
> >  		bRetval = process_registry_globals();
> > @@ -8762,9 +8769,35 @@ bool lp_load(const char *pszFname,
> >  
> >  	init_iconv();
> >  
> > +	bNoIncludes = false;
> > +
> >  	return (bRetval);
> >  }
> >  
> > +bool lp_load(const char *pszFname,
> > +	     bool global_only,
> > +	     bool save_defaults,
> > +	     bool add_ipc,
> > +	     bool initialize_globals)
> > +{
> > +	return lp_load_ex(pszFname,
> > +			  global_only,
> > +			  save_defaults,
> > +			  add_ipc,
> > +			  initialize_globals,
> > +			  false);
> > +}
> > +
> > +bool lp_load_initial_only(const char *pszFname)
> > +{
> > +	return lp_load_ex(pszFname,
> > +			  true,
> > +			  false,
> > +			  false,
> > +			  true,
> > +			  true);
> > +}
> > +
> >  /***************************************************************************
> >   Reset the max number of services.
> >  ***************************************************************************/
> > diff --git a/source/printing/printing.c b/source/printing/printing.c
> > index eb304e7..fdf5e6c 100644
> > --- a/source/printing/printing.c
> > +++ b/source/printing/printing.c
> > @@ -1406,6 +1406,11 @@ void start_background_queue(void)
> >  		/* Child. */
> >  		DEBUG(5,("start_background_queue: background LPQ thread started\n"));
> >  
> > +		if (!reinit_after_fork(smbd_messaging_context())) {
> > +			DEBUG(0,("reinit_after_fork() failed\n"));
> > +			smb_panic("reinit_after_fork() failed");
> > +		}
> > +
> >  		claim_connection( NULL, "smbd lpq backend",
> >  			FLAG_MSG_GENERAL|FLAG_MSG_SMBD|FLAG_MSG_PRINT_GENERAL);
> >  
> > diff --git a/source/smbd/server.c b/source/smbd/server.c
> > index b71d627..59bbfdb 100644
> > --- a/source/smbd/server.c
> > +++ b/source/smbd/server.c
> > @@ -575,8 +575,6 @@ static bool open_sockets_smbd(bool is_daemon, bool interactive, const char *smb_
> >  			   MSG_SMB_INJECT_FAULT, msg_inject_fault);
> >  #endif
> >  
> > -	db_tdb2_setup_messaging(smbd_messaging_context(), true);
> > -
> >  	/* now accept incoming connections - forking a new process
> >  	   for each incoming connection */
> >  	DEBUG(2,("waiting for a connection\n"));
> > @@ -741,17 +739,9 @@ static bool open_sockets_smbd(bool is_daemon, bool interactive, const char *smb_
> >  								sizeof(remaddr)),
> >  								false);
> >  
> > -				/* Reset the state of the random
> > -				 * number generation system, so
> > -				 * children do not get the same random
> > -				 * numbers as each other */
> > -
> > -				set_need_random_reseed();
> > -				/* tdb needs special fork handling - remove
> > -				 * CLEAR_IF_FIRST flags */
> > -				if (tdb_reopen_all(1) == -1) {
> > -					DEBUG(0,("tdb_reopen_all failed.\n"));
> > -					smb_panic("tdb_reopen_all failed");
> > +				if (!reinit_after_fork(smbd_messaging_context())) {
> > +					DEBUG(0,("reinit_after_fork() failed\n"));
> > +					smb_panic("reinit_after_fork() failed");
> >  				}
> >  
> >  				return True;
> > @@ -1103,6 +1093,8 @@ extern void build_options(bool screen);
> >  
> >  	TimeInit();
> >  
> > +	db_tdb2_setup_messaging(NULL, false);
> > +
> >  #ifdef HAVE_SET_AUTH_PARAMETERS
> >  	set_auth_parameters(argc,argv);
> >  #endif
> > @@ -1226,10 +1218,18 @@ extern void build_options(bool screen);
> >  		exit(1);
> >  	}
> >  
> > +	if (!lp_load_initial_only(get_dyn_CONFIGFILE())) {
> > +		DEBUG(0, ("error opening config file\n"));
> > +		exit(1);
> > +	}
> > +
> > +	if (smbd_messaging_context() == NULL)
> > +		exit(1);
> > +
> >  	/*
> >  	 * Do this before reload_services.
> >  	 */
> > -	db_tdb2_setup_messaging(NULL, false);
> > +	db_tdb2_setup_messaging(smbd_messaging_context(), true);
> >  
> >  	if (!reload_services(False))
> >  		return(-1);	
> > @@ -1285,10 +1285,12 @@ extern void build_options(bool screen);
> >  	if (is_daemon)
> >  		pidfile_create("smbd");
> >  
> > -	/* Setup all the TDB's - including CLEAR_IF_FIRST tdb's. */
> > -
> > -	if (smbd_messaging_context() == NULL)
> > +	if (!reinit_after_fork(smbd_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> >  		exit(1);
> > +	}
> > +
> > +	/* Setup all the TDB's - including CLEAR_IF_FIRST tdb's. */
> >  
> >  	if (smbd_memcache() == NULL) {
> >  		exit(1);
> > @@ -1344,8 +1346,10 @@ extern void build_options(bool screen);
> >  	   smbd is launched via inetd and we fork a copy of 
> >  	   ourselves here */
> >  
> > -	if ( is_daemon && !interactive )
> > -		start_background_queue(); 
> > +	if (is_daemon && !interactive
> > +	    && lp_parm_bool(-1, "smbd", "backgroundqueue", true)) {
> > +		start_background_queue();
> > +	}
> >  
> >  	if (!open_sockets_smbd(is_daemon, interactive, ports))
> >  		exit(1);
> > @@ -1382,13 +1386,6 @@ extern void build_options(bool screen);
> >  	/* Setup aio signal handler. */
> >  	initialize_async_io_handler();
> >  
> > -	/*
> > -	 * For clustering, we need to re-init our ctdbd connection after the
> > -	 * fork
> > -	 */
> > -	if (!NT_STATUS_IS_OK(messaging_reinit(smbd_messaging_context())))
> > -		exit(1);
> > -
> >  	/* register our message handlers */
> >  	messaging_register(smbd_messaging_context(), NULL,
> >  			   MSG_SMB_FORCE_TDIS, msg_force_tdis);
> > diff --git a/source/winbindd/winbindd.c b/source/winbindd/winbindd.c
> > index ff9bbf1..64674b8 100644
> > --- a/source/winbindd/winbindd.c
> > +++ b/source/winbindd/winbindd.c
> > @@ -1023,6 +1023,8 @@ int main(int argc, char **argv, char **envp)
> >  
> >  	load_case_tables();
> >  
> > +	db_tdb2_setup_messaging(NULL, false);
> > +
> >  	/* Initialise for running in non-root mode */
> >  
> >  	sec_init();
> > @@ -1102,7 +1104,19 @@ int main(int argc, char **argv, char **envp)
> >  	DEBUG(0,("winbindd version %s started.\n", SAMBA_VERSION_STRING));
> >  	DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
> >  
> > -	db_tdb2_setup_messaging(NULL, false);
> > +	if (!lp_load_initial_only(get_dyn_CONFIGFILE())) {
> > +		DEBUG(0, ("error opening config file\n"));
> > +		exit(1);
> > +	}
> > +
> > +	/* Initialise messaging system */
> > +
> > +	if (winbind_messaging_context() == NULL) {
> > +		DEBUG(0, ("unable to initialize messaging system\n"));
> > +		exit(1);
> > +	}
> > +
> > +	db_tdb2_setup_messaging(winbind_messaging_context(), true);
> >  
> >  	if (!reload_services_file()) {
> >  		DEBUG(0, ("error opening config file\n"));
> > @@ -1175,10 +1189,8 @@ int main(int argc, char **argv, char **envp)
> >  
> >  	TimeInit();
> >  
> > -	/* Initialise messaging system */
> > -
> > -	if (winbind_messaging_context() == NULL) {
> > -		DEBUG(0, ("unable to initialize messaging system\n"));
> > +	if (!reinit_after_fork(winbind_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> >  		exit(1);
> >  	}
> >  
> > @@ -1219,8 +1231,6 @@ int main(int argc, char **argv, char **envp)
> >  			   MSG_WINBIND_DUMP_DOMAIN_LIST,
> >  			   winbind_msg_dump_domain_list);
> >  
> > -	db_tdb2_setup_messaging(winbind_messaging_context(), true);
> > -
> >  	netsamlogon_cache_init(); /* Non-critical */
> >  	
> >  	/* clear the cached list of trusted domains */
> > diff --git a/source/winbindd/winbindd_cm.c b/source/winbindd/winbindd_cm.c
> > index adb631b..fc1a9ca 100644
> > --- a/source/winbindd/winbindd_cm.c
> > +++ b/source/winbindd/winbindd_cm.c
> > @@ -199,9 +199,8 @@ static bool fork_child_dc_connect(struct winbindd_domain *domain)
> >  
> >  	/* Leave messages blocked - we will never process one. */
> >  
> > -	/* tdb needs special fork handling */
> > -	if (tdb_reopen_all(1) == -1) {
> > -		DEBUG(0,("tdb_reopen_all failed.\n"));
> > +	if (!reinit_after_fork(winbind_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> >  		_exit(0);
> >  	}
> >  
> > diff --git a/source/winbindd/winbindd_dual.c b/source/winbindd/winbindd_dual.c
> > index 3c342e5..77fbe3c 100644
> > --- a/source/winbindd/winbindd_dual.c
> > +++ b/source/winbindd/winbindd_dual.c
> > @@ -1005,9 +1005,8 @@ static bool fork_domain_child(struct winbindd_child *child)
> >  	state.sock = fdpair[0];
> >  	close(fdpair[1]);
> >  
> > -	/* tdb needs special fork handling */
> > -	if (tdb_reopen_all(1) == -1) {
> > -		DEBUG(0,("tdb_reopen_all failed.\n"));
> > +	if (!reinit_after_fork(winbind_messaging_context())) {
> > +		DEBUG(0,("reinit_after_fork() failed\n"));
> >  		_exit(0);
> >  	}
> >  
> > 
> > 
> > -- 
> > Samba Shared Repository

-- 
Michael Adam <ma at sernet.de>  <obnox at samba.org>
SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.SerNet.DE, mailto: Info @ SerNet.DE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 206 bytes
Desc: not available
Url : http://lists.samba.org/archive/samba-technical/attachments/20080421/4c37e38e/attachment.bin


More information about the samba-technical mailing list