Author: jerry
Date: 2004-12-02 17:11:18 +0000 (Thu, 02 Dec 2004)
New Revision: 4043

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=4043

Log:
BUG 2091: don't remove statically defined printers in remove_stale_printers()
Modified:
   branches/SAMBA_3_0/source/smbd/service.c


Changeset:
Modified: branches/SAMBA_3_0/source/smbd/service.c
===================================================================
--- branches/SAMBA_3_0/source/smbd/service.c    2004-12-02 12:12:26 UTC (rev 
4042)
+++ branches/SAMBA_3_0/source/smbd/service.c    2004-12-02 17:11:18 UTC (rev 
4043)
@@ -152,10 +152,9 @@
                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 @@
        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);
                }

Reply via email to