From 15366e173e95555e317bd10c7c4228cc38f015f0 Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Mon, 19 Sep 2022 13:34:48 +0200 Subject: [PATCH] 1.28.16 --- browsed-updatenetif.patch | 121 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 browsed-updatenetif.patch diff --git a/browsed-updatenetif.patch b/browsed-updatenetif.patch new file mode 100644 index 0000000..5a49c82 --- /dev/null +++ b/browsed-updatenetif.patch @@ -0,0 +1,121 @@ +diff --git a/configure.ac b/configure.ac +index c1b108f..e921820 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -902,6 +902,16 @@ AC_ARG_WITH([shell], + ) + AC_DEFINE_UNQUOTED([SHELL], "$with_shell", [Path for a modern shell]) + ++AC_ARG_ENABLE([frequent_netif_update], ++ [AS_HELP_STRING([--enable-frequent-netif-update], [Enable network interface update after each found entry to prevent network issues])], ++ [FREQUENT_NETIF_UPDATE=$enableval], ++ [FREQUENT_NETIF_UPDATE=yes] ++) ++ ++AS_IF([test "x$FREQUENT_NETIF_UPDATE" != "xno"], ++ [AC_DEFINE([FREQUENT_NETIF_UPDATE], [1], [Define whether we want network interface update after each found entry])] ++) ++ + # ===================== + # Prepare all .in files + # ===================== +@@ -978,6 +988,7 @@ Build configuration: + pclm: ${enable_pclm} + local queue naming for remote CUPS queues: ${REMOTE_CUPS_LOCAL_QUEUE_NAMING} + keep generated queues during shutdown: ${SAVING_CREATED_QUEUES} ++ update network interfaces after each found entry: ${FREQUENT_NETIF_UPDATE} + all ipp printer auto-setup: ${enable_auto_setup_all} + only driverless auto-setup: ${enable_auto_setup_driverless_only} + only local auto-setup: ${enable_auto_setup_local_only} +diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c +index 9971209..79ece21 100644 +--- a/utils/cups-browsed.c ++++ b/utils/cups-browsed.c +@@ -490,6 +490,11 @@ static autoshutdown_inactivity_type_t autoshutdown_on = NO_QUEUES; + static guint autoshutdown_exec_id = 0; + static const char *default_printer = NULL; + static unsigned int notify_lease_duration = 86400; ++#ifdef FREQUENT_NETIF_UPDATE ++static int FrequentNetifUpdate = 1; ++#else ++static int FrequentNetifUpdate = 0; ++#endif + + static int debug_stderr = 0; + static int debug_logfile = 0; +@@ -9700,7 +9705,7 @@ examine_discovered_printer_record(const char *host, + or legacy CUPS, needed for the is_local_hostname() function calls. + During DNS-SD discovery the update is already done by the Avahi + event handler function. */ +- if (type == NULL || type[0] == '\0') ++ if (FrequentNetifUpdate && (type == NULL || type[0] == '\0')) + update_netifs(NULL); + + /* Check if we have already created a queue for the discovered +@@ -10100,9 +10105,11 @@ static void resolve_callback(AvahiServiceResolver *r, + strncpy(ifname, "Unknown", sizeof(ifname) - 1); + } + ++ if (FrequentNetifUpdate) ++ update_netifs(NULL); ++ + /* Ignore local queues of the cupsd we are serving for, identifying them + via UUID */ +- update_netifs(NULL); + if ((flags & AVAHI_LOOKUP_RESULT_LOCAL) || !strcasecmp(ifname, "lo") || + is_local_hostname(host_name)) { + update_local_printers (); +@@ -11967,6 +11974,13 @@ read_configuration (const char *filename) + else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || + !strcasecmp(value, "off") || !strcasecmp(value, "0")) + AutoClustering = 0; ++ } else if (!strcasecmp(line, "FrequentNetifUpdate") && value) { ++ if (!strcasecmp(value, "yes") || !strcasecmp(value, "true") || ++ !strcasecmp(value, "on") || !strcasecmp(value, "1")) ++ FrequentNetifUpdate = 1; ++ else if (!strcasecmp(value, "no") || !strcasecmp(value, "false") || ++ !strcasecmp(value, "off") || !strcasecmp(value, "0")) ++ FrequentNetifUpdate = 0; + } else if (!strcasecmp(line, "Cluster") && value) { + ptr = value; + ptr2 = NULL; +diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 +index 7e6ee3b..7f60168 100644 +--- a/utils/cups-browsed.conf.5 ++++ b/utils/cups-browsed.conf.5 +@@ -1005,6 +1005,18 @@ and doing specific actions when a D-BUS notification comes. + NotifLeaseDuration 86400 + .fam T + .fi ++FrequentNetifUpdate turns on/off the network interface update routines ++which happen for each found entry, which can slow up cups-browsed significantly ++if we are on a network with many shared printers or if we use BrowsePoll to a server ++with many queues. Network interface updates after receiving D-BUS notification ++from NetworkManager won't be turned off with the directive. The default value ++is 'Yes'. ++.PP ++.nf ++.fam C ++ FrequentNetifUpdate Yes ++.fam T ++.fi + .SH SEE ALSO + + \fBcups-browsed\fP(8) +diff --git a/utils/cups-browsed.conf.in b/utils/cups-browsed.conf.in +index ee2f5bf..6866918 100644 +--- a/utils/cups-browsed.conf.in ++++ b/utils/cups-browsed.conf.in +@@ -774,3 +774,12 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ + # and doing specific actions when a D-BUS notification comes. + + # NotifLeaseDuration 86400 ++ ++# FrequentNetifUpdate turns on/off the network interface update routines ++# which happen for each found entry, which can slow up cups-browsed significantly ++# if we are on a network with many shared printers or if we use BrowsePoll to a server ++# with many queues. Network interface updates after receiving D-BUS notification ++# from NetworkManager won't be turned off with the directive. The default value ++# is 'Yes'. ++# ++# FrequentNetifUpdate Yes