summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/process.c6
-rw-r--r--source3/smbd/server.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 1599ade12d..9ed83ec88c 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -994,6 +994,12 @@ machine %s in domain %s.\n", global_myname, global_myworkgroup ));
process_pending_change_notify_queue(t);
/*
+ * Ensure the print queue tdb doesn't grow too
+ * big by periodically scanning it.
+ */
+ process_print_queue(t);
+
+ /*
* Now we are root, check if the log files need pruning.
*/
if(need_to_check_log_size())
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 4442a1f71f..22a95fdd18 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -422,6 +422,10 @@ void exit_server(char *reason)
respond_to_all_remaining_local_messages();
+ /* Don't do this on every exit... */
+ if (sys_random() % 10)
+ process_print_queue(time(NULL));
+
#ifdef WITH_DFS
if (dcelogin_atmost_once) {
dfs_unlogin();