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); }