summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/server.c18
-rw-r--r--source3/smbd/server_reload.c2
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 */