diff options
Diffstat (limited to 'source3/nmbd/nmbd.c')
-rw-r--r-- | source3/nmbd/nmbd.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index 01fdbbc5a4..9396219ea7 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/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 ) ); |