Toshaan Bharvani
2 years ago
commit
560a642a3b
4 changed files with 1348 additions and 0 deletions
@ -0,0 +1,29 @@ |
|||||||
|
From 144322be6e06ff12f101fc35e472d62978861e28 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Till Kamppeter <till.kamppeter@gmail.com> |
||||||
|
Date: Thu, 15 Apr 2021 14:26:44 +0200 |
||||||
|
Subject: [PATCH] cups-browsed: Always save "...-default" option entries from |
||||||
|
printers.conf |
||||||
|
|
||||||
|
(cherry picked from commit cdd61132e1719a88dd8006c65e8e260c1aaa02e4) |
||||||
|
--- |
||||||
|
utils/cups-browsed.c | 4 +--- |
||||||
|
2 files changed, 4 insertions(+), 3 deletions(-) |
||||||
|
|
||||||
|
diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c |
||||||
|
index bffd1e09..0c335055 100644 |
||||||
|
--- a/utils/cups-browsed.c |
||||||
|
+++ b/utils/cups-browsed.c |
||||||
|
@@ -5648,9 +5648,7 @@ record_printer_options(const char *printer) { |
||||||
|
strcasecmp(key + strlen(key) - strlen(*ptr) + 1, *ptr + 1) == 0)) |
||||||
|
break; |
||||||
|
if (*ptr != NULL) { |
||||||
|
- if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0 && |
||||||
|
- (ppdname == NULL || |
||||||
|
- strncasecmp(key + strlen(key) - 8, "-default", 8))) { |
||||||
|
+ if (strcasecmp(key, CUPS_BROWSED_DEST_PRINTER "-default") != 0) { |
||||||
|
ippAttributeString(attr, buf, sizeof(buf)); |
||||||
|
buf[sizeof(buf) - 1] = '\0'; |
||||||
|
c = buf; |
||||||
|
-- |
||||||
|
2.30.2 |
||||||
|
|
@ -0,0 +1,128 @@ |
|||||||
|
From d90a4fc57b00b4a1f6c196bcb96025251b555dd9 Mon Sep 17 00:00:00 2001 |
||||||
|
From: zdohnal <zdohnal@redhat.com> |
||||||
|
Date: Fri, 18 Jun 2021 12:27:53 +0200 |
||||||
|
Subject: [PATCH] cups-browsed.c: Make NotifLeaseDuration configurable and |
||||||
|
renew after half the lease duration not 60 sec before end |
||||||
|
|
||||||
|
1) NotifLeaseDuration directive for cups-browsed.conf - it will make |
||||||
|
lease duration for notifications configurable by users. IMO it is not |
||||||
|
useful for regular users, but it is helpful during sanity testing |
||||||
|
(for verifying that we actually renew the subscription when time |
||||||
|
comes). The current hardcoded 1 day is unusuable for that :( . |
||||||
|
I implemented the lowest threshold to 300s to prevent a possible DoS. |
||||||
|
2) Subscription renewal is set to happen in the middle of NotifLeaseDuration, |
||||||
|
not one minute before lease expiration. This was a problem on busy servers, |
||||||
|
where cups-browsed was busy and wasn't able to renew the subscription |
||||||
|
before cupsd removed it. Then if some jobs had come before the subscription |
||||||
|
was created again, the queue got disabled. The proposed approach is based |
||||||
|
on behavior of DHCP. |
||||||
|
--- |
||||||
|
utils/cups-browsed.c | 17 +++++++++++++---- |
||||||
|
utils/cups-browsed.conf.5 | 11 +++++++++++ |
||||||
|
utils/cups-browsed.conf.in | 8 ++++++++ |
||||||
|
3 files changed, 32 insertions(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c |
||||||
|
index 61d6c551..2d367c59 100644 |
||||||
|
--- a/utils/cups-browsed.c |
||||||
|
+++ b/utils/cups-browsed.c |
||||||
|
@@ -142,7 +142,6 @@ static int ldap_rebind_proc(LDAP *RebindLDAPHandle, |
||||||
|
#define TIMEOUT_REMOVE -1 |
||||||
|
#define TIMEOUT_CHECK_LIST 2 |
||||||
|
|
||||||
|
-#define NOTIFY_LEASE_DURATION (24 * 60 * 60) |
||||||
|
#define CUPS_DBUS_NAME "org.cups.cupsd.Notifier" |
||||||
|
#define CUPS_DBUS_PATH "/org/cups/cupsd/Notifier" |
||||||
|
#define CUPS_DBUS_INTERFACE "org.cups.cupsd.Notifier" |
||||||
|
@@ -508,6 +507,7 @@ static int autoshutdown_timeout = 30; |
||||||
|
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; |
||||||
|
|
||||||
|
static int debug_stderr = 0; |
||||||
|
static int debug_logfile = 0; |
||||||
|
@@ -5017,7 +5017,7 @@ create_subscription () |
||||||
|
ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, |
||||||
|
"notify-recipient-uri", NULL, "dbus://"); |
||||||
|
ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, |
||||||
|
- "notify-lease-duration", NOTIFY_LEASE_DURATION); |
||||||
|
+ "notify-lease-duration", notify_lease_duration); |
||||||
|
|
||||||
|
resp = cupsDoRequest (conn, req, "/"); |
||||||
|
if (!resp || cupsLastError() != IPP_STATUS_OK) { |
||||||
|
@@ -5060,7 +5060,7 @@ renew_subscription (int id) |
||||||
|
ippAddString (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, |
||||||
|
"notify-recipient-uri", NULL, "dbus://"); |
||||||
|
ippAddInteger (req, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, |
||||||
|
- "notify-lease-duration", NOTIFY_LEASE_DURATION); |
||||||
|
+ "notify-lease-duration", notify_lease_duration); |
||||||
|
|
||||||
|
resp = cupsDoRequest (conn, req, "/"); |
||||||
|
if (!resp || cupsLastError() != IPP_STATUS_OK) { |
||||||
|
@@ -11857,6 +11857,15 @@ read_configuration (const char *filename) |
||||||
|
} else |
||||||
|
debug_printf("Invalid %s value: %d\n", |
||||||
|
line, t); |
||||||
|
+ } else if (!strcasecmp(line, "NotifLeaseDuration") && value) { |
||||||
|
+ int t = atoi(value); |
||||||
|
+ if (t >= 300) { |
||||||
|
+ notify_lease_duration = t; |
||||||
|
+ debug_printf("Set %s to %d sec.\n", |
||||||
|
+ line, t); |
||||||
|
+ } else |
||||||
|
+ debug_printf("Invalid %s value: %d\n", |
||||||
|
+ line, t); |
||||||
|
} else if (!strcasecmp(line, "HttpMaxRetries") && value) { |
||||||
|
int t = atoi(value); |
||||||
|
if (t > 0) { |
||||||
|
@@ -12728,7 +12737,7 @@ int main(int argc, char*argv[]) { |
||||||
|
/* Subscribe to CUPS' D-Bus notifications and create a proxy to receive |
||||||
|
the notifications */ |
||||||
|
subscription_id = create_subscription (); |
||||||
|
- g_timeout_add_seconds (NOTIFY_LEASE_DURATION - 60, |
||||||
|
+ g_timeout_add_seconds (notify_lease_duration / 2, |
||||||
|
renew_subscription_timeout, |
||||||
|
&subscription_id); |
||||||
|
cups_notifier = cups_notifier_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, |
||||||
|
diff --git a/utils/cups-browsed.conf.5 b/utils/cups-browsed.conf.5 |
||||||
|
index c47f8e8d..263f0843 100644 |
||||||
|
--- a/utils/cups-browsed.conf.5 |
||||||
|
+++ b/utils/cups-browsed.conf.5 |
||||||
|
@@ -966,6 +966,17 @@ shutdown. |
||||||
|
|
||||||
|
.fam T |
||||||
|
.fi |
||||||
|
+NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed |
||||||
|
+in cupsd will last before cupsd cancels it. The default value is 1 day |
||||||
|
+in seconds - 86400. The subscription renewal is set to happen after half of |
||||||
|
+NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues |
||||||
|
+and doing specific actions when a D-BUS notification comes. |
||||||
|
+.PP |
||||||
|
+.nf |
||||||
|
+.fam C |
||||||
|
+ NotifLeaseDuration 86400 |
||||||
|
+.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 3cc4ebb1..ffdf83d6 100644 |
||||||
|
--- a/utils/cups-browsed.conf.in |
||||||
|
+++ b/utils/cups-browsed.conf.in |
||||||
|
@@ -741,3 +741,11 @@ BrowseRemoteProtocols @BROWSEREMOTEPROTOCOLS@ |
||||||
|
# on the size of the file. |
||||||
|
|
||||||
|
# DebugLogFileSize 300 |
||||||
|
+ |
||||||
|
+# NotifLeaseDuration defines how long the D-BUS subscription created by cups-browsed |
||||||
|
+# in cupsd will last before cupsd cancels it. The default value is 1 day |
||||||
|
+# in seconds - 86400. The subscription renewal is set to happen after half of |
||||||
|
+# NotifLeaseDuration passed. The D-BUS notifications are used for watching over queues |
||||||
|
+# and doing specific actions when a D-BUS notification comes. |
||||||
|
+ |
||||||
|
+# NotifLeaseDuration 86400 |
||||||
|
-- |
||||||
|
2.31.1 |
||||||
|
|
@ -0,0 +1,26 @@ |
|||||||
|
From 022c34fedb66f706b2ab82d7506d5b5b1fa18e1f Mon Sep 17 00:00:00 2001 |
||||||
|
From: Bryan Mason <bmason@redhat.com> |
||||||
|
Date: Fri, 16 Jul 2021 11:19:42 -0700 |
||||||
|
Subject: [PATCH] libcupsfilter: Fix page range like "10-" in pdftopdf() |
||||||
|
filter function |
||||||
|
|
||||||
|
--- |
||||||
|
filter/pdftopdf/pdftopdf.cc | 2 +- |
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/filter/pdftopdf/pdftopdf.cc b/filter/pdftopdf/pdftopdf.cc |
||||||
|
index 5725e199..979644f1 100644 |
||||||
|
--- a/filter/pdftopdf/pdftopdf.cc |
||||||
|
+++ b/filter/pdftopdf/pdftopdf.cc |
||||||
|
@@ -256,7 +256,7 @@ static void parseRanges(const char *range,IntervalSet &ret) // {{{ |
||||||
|
} else { |
||||||
|
upper=strtol(range,(char **)&range,10); |
||||||
|
if (upper>=2147483647) { |
||||||
|
- ret.add(1); |
||||||
|
+ ret.add(lower); |
||||||
|
} else { |
||||||
|
ret.add(lower,upper+1); |
||||||
|
} |
||||||
|
-- |
||||||
|
2.31.1 |
||||||
|
|
Loading…
Reference in new issue