diff options
-rw-r--r-- | source3/smbd/server.c | 18 | ||||
-rw-r--r-- | source3/smbd/server_reload.c | 2 |
2 files changed, 15 insertions, 5 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index ca6f6c8e16..1c614dad0b 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -982,8 +982,17 @@ extern void build_options(bool screen); if (smbd_messaging_context() == NULL) exit(1); - if (!reload_services(smbd_messaging_context(), False)) - return(-1); + /* + * Reloading of the printers will not work here as we don't have a + * server info and rpc services set up. It will be called later. + */ + if (!reload_services(smbd_messaging_context(), False)) { + exit(1); + } + + /* ...NOTE... Log files are working from this point! */ + + DEBUG(3,("loaded services\n")); init_structs(); @@ -1002,8 +1011,6 @@ extern void build_options(bool screen); } #endif - DEBUG(3,( "loaded services\n")); - if (!is_daemon && !is_a_socket(0)) { if (!interactive) DEBUG(0,("standard input is not a socket, assuming -D option\n")); @@ -1156,6 +1163,9 @@ extern void build_options(bool screen); static_init_rpc; + /* Publish nt printers, this requires a working winreg pipe */ + reload_printers(smbd_messaging_context()); + /* only start the background queue daemon if we are running as a daemon -- bad things will happen if smbd is launched via inetd and we fork a copy of diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c index 7512f8e482..e1d563d09d 100644 --- a/source3/smbd/server_reload.c +++ b/source3/smbd/server_reload.c @@ -44,7 +44,7 @@ void reload_printers(struct messaging_context *msg_ctx) status = make_server_info_system(talloc_tos(), &server_info); if (!NT_STATUS_IS_OK(status)) { - DEBUG(0, ("reload_printers: " + DEBUG(3, ("reload_printers: " "Could not create system server_info\n")); /* can't remove stale printers before we * are fully initilized */ |