1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-31 17:18:04 +03:00

Fix found by Andrew to stop local/remote printers being

confused. check_printer_ok was causing SETPRINTER calls to fail.
Jeremy.
This commit is contained in:
Jeremy Allison 0001-01-01 00:00:00 +00:00
parent 5518f59976
commit b41cc5fea7

View File

@ -3406,8 +3406,9 @@ static BOOL check_printer_ok(NT_PRINTER_INFO_LEVEL_2 *info, int snum)
* as this is what Samba insists upon.
*/
if (!(info->attributes & PRINTER_ATTRIBUTE_SHARED)) {
DEBUG(10,("check_printer_ok: SHARED check failed (%x).\n", (unsigned int)info->attributes ));
if (!(info->attributes & (PRINTER_ATTRIBUTE_SHARED|PRINTER_ATTRIBUTE_NETWORK))) {
DEBUG(10,("check_printer_ok: SHARED/NETWORK check failed (%x).\n",
(unsigned int)info->attributes ));
return False;
}
@ -3421,8 +3422,22 @@ static BOOL check_printer_ok(NT_PRINTER_INFO_LEVEL_2 *info, int snum)
}
}
/*
* Sometimes the NT client doesn't set the sharename, but
* includes the sharename in the printername. This could
* cause SETPRINTER to fail which causes problems with the
* client getting confused between local/remote printers...
*/
if (*info->sharename == '\0') {
char *p = strrchr(info->printername, '\\');
if (p)
fstrcpy(info->sharename, p+1);
}
if (!strequal(info->sharename, lp_servicename(snum))) {
DEBUG(10,("check_printer_ok: NAME check failed (%s) (%s).\n", info->sharename, lp_servicename(snum)));
DEBUG(10,("check_printer_ok: NAME check failed (%s) (%s).\n",
info->sharename, lp_servicename(snum)));
return False;
}