summaryrefslogtreecommitdiffstats
path: root/source/smbd/service.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2004-12-02 17:11:18 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:53:31 -0500
commitc24a3c49ce20797c0f9172e503e34770d00842ec (patch)
tree00c06b36eb07ae27d8b794dab9265cf96f3a0e6b /source/smbd/service.c
parenta1e5a2a6ab1abc9add7a606e2e3f2d6c88dcf96c (diff)
downloadsamba-c24a3c49ce20797c0f9172e503e34770d00842ec.tar.gz
samba-c24a3c49ce20797c0f9172e503e34770d00842ec.tar.xz
samba-c24a3c49ce20797c0f9172e503e34770d00842ec.zip
r4043: BUG 2091: don't remove statically defined printers in remove_stale_printers()
Diffstat (limited to 'source/smbd/service.c')
-rw-r--r--source/smbd/service.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/source/smbd/service.c b/source/smbd/service.c
index 4d111e0ea35..3dcd803a7ce 100644
--- a/source/smbd/service.c
+++ b/source/smbd/service.c
@@ -152,10 +152,9 @@ int find_service(fstring service)
int iPrinterService;
if ((iPrinterService = lp_servicenumber(PRINTERS_NAME)) >= 0) {
- char *pszTemp;
+ const char *pszTemp = lp_printcapname();
DEBUG(3,("checking whether %s is a valid printer name...\n", service));
- pszTemp = lp_printcapname();
if ((pszTemp != NULL) && pcap_printername_ok(service, pszTemp)) {
DEBUG(3,("%s is a valid printer name\n", service));
DEBUG(3,("adding %s as a printer service\n", service));
@@ -877,12 +876,21 @@ void remove_stale_printers( void )
iNumServices = lp_numservices();
printersServiceNum = lp_servicenumber( PRINTERS_NAME);
for( snum = 0; snum < iNumServices; snum++) {
+
/* Never remove PRINTERS_NAME */
+
if ( snum == printersServiceNum)
continue;
pname = lp_printername( snum);
- /* Is snum a print service and still in the printing subsystem? */
- if ( lp_print_ok( snum) && !pcap_printername_ok( pname, NULL)) {
+
+ /* Is snum an autoloaded print service and still
+ in the printing subsystem? */
+
+ if ( lp_snum_ok(snum)
+ && lp_print_ok(snum)
+ && lp_autoloaded(snum)
+ && !pcap_printername_ok( pname, NULL))
+ {
DEBUG( 3, ( "Removing printer: %s\n", pname));
lp_killservice( snum);
}