Date: Tuesday, September 20, 2016 @ 17:17:25
  Author: andyrtr
Revision: 276773

upgpkg: cups-filters 1.11.3-2

apply upstream fix for unneeded calls of handle_cups_queues

Added:
  cups-filters/trunk/bazaar_rev7537.diff
Modified:
  cups-filters/trunk/PKGBUILD

---------------------+
 PKGBUILD            |   16 +++-
 bazaar_rev7537.diff |  166 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 178 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2016-09-20 15:52:58 UTC (rev 276772)
+++ PKGBUILD    2016-09-20 17:17:25 UTC (rev 276773)
@@ -3,10 +3,10 @@
 
 pkgname=cups-filters
 pkgver=1.11.3
-pkgrel=1
+pkgrel=2
 pkgdesc="OpenPrinting CUPS Filters"
 arch=('i686' 'x86_64')
-url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting";
+url="https://wiki.linuxfoundation.org/openprinting/cups-filters";
 license=('custom')
 depends=('lcms2' 'poppler' 'qpdf' 'imagemagick' 'liblouis' 'ijs' 'libcups')
 makedepends=('ghostscript' 'ttf-dejavu' 'python') # ttf-dejavu for make check
@@ -17,12 +17,20 @@
            'antiword: needed to convert MS Word documents (requires also 
docx2txt (AUR)')
 backup=(etc/fonts/conf.d/99pdftoopvp.conf
         etc/cups/cups-browsed.conf)
-source=(http://www.openprinting.org/download/cups-filters/$pkgname-$pkgver.tar.xz)
+source=(http://www.openprinting.org/download/cups-filters/$pkgname-$pkgver.tar.xz
+       bazaar_rev7537.diff)
 provides=('foomatic-filters')
 replaces=('foomatic-filters')
 conflicts=('foomatic-filters')
-md5sums=('3e7ec44dc9b977f1beb64df49041004f')
+md5sums=('3e7ec44dc9b977f1beb64df49041004f'
+         '3c917d4d0091edfb89f34f8a37df91ef')
 
+prepare() {
+  cd $pkgname-$pkgver
+  # avoid unneeded calls of handle_cups_queues() and even infinite loops
+  patch -Np0 -i ../bazaar_rev7537.diff
+}
+
 build() {
   cd $pkgname-$pkgver
   ./configure --prefix=/usr  \

Added: bazaar_rev7537.diff
===================================================================
--- bazaar_rev7537.diff                         (rev 0)
+++ bazaar_rev7537.diff 2016-09-20 17:17:25 UTC (rev 276773)
@@ -0,0 +1,166 @@
+=== modified file 'NEWS'
+--- NEWS       2016-09-15 18:00:07 +0000
++++ NEWS       2016-09-20 02:30:28 +0000
+@@ -1,6 +1,13 @@
+ NEWS - OpenPrinting CUPS Filters v1.11.3 - 2016-09-15
+ -----------------------------------------------------
+ 
++CHANGES IN V1.11.4
++
++      - cups-browsed: Fixes to avoid unneeded calls of
++        handle_cups_queues() and even infinite loops (Possible fix
++        for bug #1376). Also make sure that queues left over from
++        the previous cups-browsed session are integrated correctly.
++
+ CHANGES IN V1.11.3
+ 
+       - cups-browsed: If a queue is not only discovered via Bonjour
+
+=== modified file 'utils/cups-browsed.c'
+--- utils/cups-browsed.c       2016-09-14 15:48:33 +0000
++++ utils/cups-browsed.c       2016-09-20 02:30:28 +0000
+@@ -585,11 +585,15 @@
+ static http_t *
+ http_connect_local (void)
+ {
+-  debug_printf("cups-browsed: Creating http connection to local CUPS daemon: 
%s:%d\n", cupsServer(), ippPort());
+-  if (!local_conn)
++  if (!local_conn) {
++    debug_printf("cups-browsed: Creating http connection to local CUPS 
daemon: %s:%d\n", cupsServer(), ippPort());
+     local_conn = httpConnectEncryptShortTimeout(cupsServer(), ippPort(),
+                                               cupsEncryption());
+-  httpSetTimeout(local_conn, 3, http_timeout_cb, NULL);
++  }
++  if (local_conn)
++    httpSetTimeout(local_conn, 3, http_timeout_cb, NULL);
++  else
++    debug_printf("cups-browsed: Failed creating http connection to local CUPS 
daemon: %s:%d\n", cupsServer(), ippPort());
+ 
+   return local_conn;
+ }
+@@ -3946,24 +3950,18 @@
+       break;
+ 
+     case STATUS_CONFIRMED:
+-      if (p->is_legacy && p->timeout > current_time) {
++      /* Only act if the timeout has passed */
++      if (p->timeout > current_time)
++      break;
++
++      if (p->is_legacy) {
+       /* Remove a queue based on a legacy CUPS broadcast when the
+          broadcast timeout expires without a new broadcast of this
+          queue from the server */
+       p->status = STATUS_DISAPPEARED;
+       p->timeout = time(NULL) + TIMEOUT_IMMEDIATELY;
+-      } else {
+-      /* If this queue was the default printer in its previous life, make
+-         it the default printer again. */
+-      queue_creation_handle_default(p->name);
+-
+-      /* If this queue is disabled, re-enable it. */
+-      enable_printer(p->name);
+-
+-      /* Record the options, to record any changes which happened
+-         while cups-browsed was not running */
+-      record_printer_options(p->name);
+-      }
++      } else
++      p->timeout = (time_t) -1;
+ 
+       break;
+ 
+@@ -4002,11 +4000,11 @@
+     g_source_remove (queues_timer_id);
+ 
+   if (timeout != (time_t) -1) {
++    debug_printf("checking queues in %ds\n", timeout);
+     queues_timer_id = g_timeout_add_seconds (timeout, handle_cups_queues, 
NULL);
+-    debug_printf("checking queues in %ds\n", timeout);
+   } else {
++    debug_printf("listening\n");
+     queues_timer_id = 0;
+-    debug_printf("listening\n");
+   }
+ }
+ 
+@@ -4403,6 +4401,8 @@
+   }
+ 
+   if (p) {
++    debug_printf("Entry for %s (URI: %s) already exists.\n",
++               p->name, p->uri);
+     /* We have already created a local queue, check whether the
+        discovered service allows us to upgrade the queue to IPPS
+        or whether the URI part after ipp(s):// has changed, or
+@@ -4453,26 +4453,31 @@
+       p->type = strdup(type);
+       p->domain = strdup(domain);
+ 
+-    } else {
++    }
+ 
+-      /* Nothing to do, mark queue entry as confirmed if the entry
+-       is unconfirmed */
+-      debug_printf("Entry for %s (URI: %s) already exists.\n",
++    /* Mark queue entry as confirmed if the entry
++       is unconfirmed */
++    if (p->status == STATUS_UNCONFIRMED ||
++      p->status == STATUS_DISAPPEARED) {
++      debug_printf("Marking entry for %s (URI: %s) as confirmed.\n",
+                  p->name, p->uri);
+-      if (p->status == STATUS_UNCONFIRMED ||
+-        p->status == STATUS_DISAPPEARED) {
+-      p->status = STATUS_CONFIRMED;
+-      if (p->is_legacy) {
+-        p->timeout = time(NULL) + BrowseTimeout;
+-        debug_printf("starting BrowseTimeout timer for %s (%ds)\n",
+-                     p->name, BrowseTimeout);
+-      } else
+-        p->timeout = (time_t) -1;
+-      debug_printf("Marking entry for %s (URI: %s) as confirmed.\n",
+-                   p->name, p->uri);
+-      }
++      p->status = STATUS_CONFIRMED;
++      if (p->is_legacy) {
++      p->timeout = time(NULL) + BrowseTimeout;
++      debug_printf("starting BrowseTimeout timer for %s (%ds)\n",
++                   p->name, BrowseTimeout);
++      } else
++      p->timeout = (time_t) -1;
++      /* If this queue was the default printer in its previous life, make
++       it the default printer again. */
++      queue_creation_handle_default(p->name);
++      /* If this queue is disabled, re-enable it. */
++      enable_printer(p->name);
++      /* Record the options, to record any changes which happened
++       while cups-browsed was not running */
++      record_printer_options(p->name);
++    }
+ 
+-    }
+     if (p->host[0] == '\0') {
+       free (p->host);
+       p->host = strdup(remote_host);
+@@ -5526,8 +5531,6 @@
+ 
+   g_list_free_full (context->printers, browsepoll_printer_free);
+   context->printers = printers;
+-  if (in_shutdown == 0)
+-    recheck_timer ();
+ 
+ fail:
+   if (response)
+@@ -5785,7 +5788,10 @@
+ 
+   inhibit_local_printers_update = FALSE;
+ 
+-fail:
++  if (in_shutdown == 0)
++    recheck_timer ();
++
++ fail:
+ 
+   if (conn)
+     httpClose (conn);
+

Reply via email to