summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/globals.c1
-rw-r--r--source3/smbd/process.c4
-rw-r--r--source3/smbd/proto.h2
-rw-r--r--source3/smbd/server.c46
-rw-r--r--source3/smbd/server_reload.c9
5 files changed, 12 insertions, 50 deletions
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index fe743a6965..bf36dcb71f 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -60,6 +60,7 @@ bool logged_ioctl_message = false;
time_t last_smb_conf_reload_time = 0;
time_t last_printer_reload_time = 0;
+
/****************************************************************************
structure to hold a linked list of queued messages.
for processing.
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 9df95a8d9d..86e834789f 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -27,7 +27,7 @@
#include "../lib/async_req/async_sock.h"
#include "ctdbd_conn.h"
#include "../lib/util/select.h"
-#include "printing/pcap.h"
+#include "printing/queue_process.h"
#include "system/select.h"
#include "passdb.h"
#include "auth.h"
@@ -882,7 +882,7 @@ static void smbd_sig_hup_handler(struct tevent_context *ev,
DEBUG(1,("Reloading services after SIGHUP\n"));
reload_services(msg_ctx, smbd_server_conn->sock, False);
if (am_parent) {
- pcap_cache_reload(ev, msg_ctx, &reload_pcap_change_notify);
+ printing_subsystem_update(ev, msg_ctx);
}
}
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index b2acaa0ee7..2b24f70930 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -966,8 +966,6 @@ void reload_printers(struct tevent_context *ev,
struct messaging_context *msg_ctx);
bool reload_services(struct messaging_context *msg_ctx, int smb_sock,
bool test);
-void reload_pcap_change_notify(struct tevent_context *ev,
- struct messaging_context *msg_ctx);
void exit_server(const char *const explanation);
void exit_server_cleanly(const char *const explanation);
void exit_server_fault(void);
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 18e51a2e42..16395ee3dd 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -32,8 +32,8 @@
#include "memcache.h"
#include "ctdbd_conn.h"
#include "printing/printer_list.h"
+#include "printing/queue_process.h"
#include "rpc_server/rpc_service_setup.h"
-#include "printing/pcap.h"
#include "printing.h"
#include "serverid.h"
#include "passdb.h"
@@ -69,8 +69,7 @@ static void smb_conf_updated(struct messaging_context *msg,
change_to_root_user();
reload_services(msg, smbd_server_conn->sock, False);
if (am_parent) {
- pcap_cache_reload(ev_ctx, msg,
- &reload_pcap_change_notify);
+ printing_subsystem_update(ev_ctx, msg);
}
}
@@ -585,28 +584,6 @@ static bool smbd_open_one_socket(struct smbd_parent_context *parent,
return true;
}
-static bool smbd_parent_housekeeping(const struct timeval *now, void *private_data)
-{
- struct messaging_context *msg_ctx =
- talloc_get_type_abort(private_data, struct messaging_context);
- time_t printcap_cache_time = (time_t)lp_printcap_cache_time();
- time_t t = time_mono(NULL);
-
- DEBUG(5, ("parent housekeeping\n"));
-
- /* if periodic printcap rescan is enabled, see if it's time to reload */
- if ((printcap_cache_time != 0)
- && (t >= (last_printer_reload_time + printcap_cache_time))) {
- DEBUG( 3,( "Printcap cache time expired.\n"));
- pcap_cache_reload(messaging_event_context(msg_ctx),
- msg_ctx,
- &reload_pcap_change_notify);
- last_printer_reload_time = t;
- }
-
- return true;
-}
-
/****************************************************************************
Open the socket communication.
****************************************************************************/
@@ -757,14 +734,6 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
return false;
}
- if (!(event_add_idle(ev_ctx, NULL,
- timeval_set(SMBD_HOUSEKEEPING_INTERVAL, 0),
- "parent_housekeeping", smbd_parent_housekeeping,
- msg_ctx))) {
- DEBUG(0, ("Could not add parent_housekeeping event\n"));
- return false;
- }
-
/* Listen to messages */
messaging_register(msg_ctx, NULL, MSG_SMB_SAM_SYNC, msg_sam_sync);
@@ -1252,9 +1221,6 @@ extern void build_options(bool screen);
exit(1);
}
- /* Publish nt printers, this requires a working winreg pipe */
- pcap_cache_reload(ev_ctx, msg_ctx, &reload_printers);
-
/* 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
@@ -1262,7 +1228,13 @@ extern void build_options(bool screen);
if (is_daemon && !interactive
&& lp_parm_bool(-1, "smbd", "backgroundqueue", true)) {
- start_background_queue(ev_ctx, msg_ctx);
+ if (!printing_subsystem_init(ev_ctx, msg_ctx, true)) {
+ exit(1);
+ }
+ } else {
+ if (!printing_subsystem_init(ev_ctx, msg_ctx, false)) {
+ exit(1);
+ }
}
if (is_daemon && !_lp_disable_spoolss()) {
diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c
index db81aadab1..6639c4a8f6 100644
--- a/source3/smbd/server_reload.c
+++ b/source3/smbd/server_reload.c
@@ -143,12 +143,3 @@ bool reload_services(struct messaging_context *msg_ctx, int smb_sock,
return(ret);
}
-
-/****************************************************************************
- Notify smbds of new printcap data
-**************************************************************************/
-void reload_pcap_change_notify(struct tevent_context *ev,
- struct messaging_context *msg_ctx)
-{
- message_send_all(msg_ctx, MSG_PRINTER_PCAP, NULL, 0, NULL);
-}