s3: printing: Fix problem with server taking too long to respond to a MSG_PRINTER_DRV...
commitec1dacc552465f15546f095ab080606963f842eb
authorJeremy Allison <jra@samba.org>
Wed, 12 Feb 2014 18:13:19 +0000 (12 10:13 -0800)
committerKarolin Seeger <kseeger@samba.org>
Mon, 10 Mar 2014 14:31:57 +0000 (10 15:31 +0100)
tree2205af6b8166943760803e68ca8328a034fe2af5
parentce98b1995f09d2f2739d520e09044b78596756a5
s3: printing: Fix problem with server taking too long to respond to a MSG_PRINTER_DRVUPGRADE message.

Receiving a MSG_PRINTER_DRVUPGRADE causes
smbd to iterate over all printers looking
for ones that uses the driver. This is a very
expensive operation requiring a read of all
registry printer parameters.

On a system with a large number of printers,
this causes the clients to timeout (smbd
can take longer than 60 seconds to respond).

This patch fixes the problem by forwarding
the MSG_PRINTER_DRVUPGRADE to the background
lpq queue updater process and allowing it to
take care of the updating of the changeid
in the registry, allowing the smbd connected
to the client to return to processing requests
immediately.

https://bugzilla.samba.org/show_bug.cgi?id=9942

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Tue Feb 18 17:48:30 CET 2014 on sn-devel-104

(cherry picked from commit cd655715b8ee0a4e681d67b3996f71017b941401)
source3/printing/nt_printing.c
source3/printing/queue_process.c
source3/rpc_server/spoolss/srv_spoolss_nt.c