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

s3: Add "print notify backchannel" parameter to prevent us doing the reverse print notify connection.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri Mar 18 21:34:30 CET 2011 on sn-devel-104
This commit is contained in:
Volker Lendecke 2011-03-18 12:07:43 -07:00 committed by Jeremy Allison
parent 8ae1f32229
commit 4b347a1b17
4 changed files with 37 additions and 0 deletions

View File

@ -0,0 +1,18 @@
<samba:parameter name="print notify backchannel"
context="S"
print="1"
type="boolean"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>Windows print clients can update print queue status by expecting
the server to open a backchannel SMB connection to them. Due to
client firewall settings this can cause considerable timeouts
and will often fail, as there is no guarantee the client is even
running an SMB server. By setting this parameter to <constant>no</constant>
the Samba print server will not try to connect back to clients
and treat corresponding requests as if the connection back to
the client failed. The default setting of <constant>yes</constant>
causes smbd to attempt this connection.
</description>
<value type="default">yes</value>
</samba:parameter>

View File

@ -3199,6 +3199,7 @@ bool lp_guest_ok(int );
bool lp_guest_only(int );
bool lp_administrative_share(int );
bool lp_print_ok(int );
bool lp_print_notify_backchannel(int );
bool lp_map_hidden(int );
bool lp_map_archive(int );
bool lp_store_dos_attributes(int );

View File

@ -474,6 +474,7 @@ struct service {
bool bAdministrative_share;
bool bGuest_ok;
bool bPrint_ok;
bool bPrintNotifyBackchannel;
bool bMap_system;
bool bMap_hidden;
bool bMap_archive;
@ -618,6 +619,7 @@ static struct service sDefault = {
False, /* bAdministrative_share */
False, /* bGuest_ok */
False, /* bPrint_ok */
True, /* bPrintNotifyBackchannel */
False, /* bMap_system */
False, /* bMap_hidden */
True, /* bMap_archive */
@ -2712,6 +2714,15 @@ static struct parm_struct parm_table[] = {
.enum_list = NULL,
.flags = FLAG_ADVANCED | FLAG_PRINT,
},
{
.label = "print notify backchannel",
.type = P_BOOL,
.p_class = P_LOCAL,
.ptr = &sDefault.bPrintNotifyBackchannel,
.special = NULL,
.enum_list = NULL,
.flags = FLAG_ADVANCED,
},
{
.label = "print ok",
.type = P_BOOL,
@ -5918,6 +5929,7 @@ FN_LOCAL_BOOL(lp_guest_ok, bGuest_ok)
FN_LOCAL_BOOL(lp_guest_only, bGuest_only)
FN_LOCAL_BOOL(lp_administrative_share, bAdministrative_share)
FN_LOCAL_BOOL(lp_print_ok, bPrint_ok)
FN_LOCAL_BOOL(lp_print_notify_backchannel, bPrintNotifyBackchannel)
FN_LOCAL_BOOL(lp_map_hidden, bMap_hidden)
FN_LOCAL_BOOL(lp_map_archive, bMap_archive)
FN_LOCAL_BOOL(lp_store_dos_attributes, bStoreDosAttributes)

View File

@ -2736,6 +2736,12 @@ WERROR _spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct pipes_struct *p,
DEBUG(10,("_spoolss_RemoteFindFirstPrinterChangeNotifyEx: "
"client_address is %s\n", p->client_id->addr));
if (!lp_print_notify_backchannel(snum)) {
DEBUG(10, ("_spoolss_RemoteFindFirstPrinterChangeNotifyEx: "
"backchannel disabled\n"));
return WERR_SERVER_UNAVAILABLE;
}
if (!interpret_string_addr(&client_ss, p->client_id->addr,
AI_NUMERICHOST)) {
return WERR_SERVER_UNAVAILABLE;