Some Avahi support fixes from Till Kamppeter.
This commit is contained in:
parent
0b2684f38f
commit
6f33db07e9
282
cups-avahi.patch
282
cups-avahi.patch
@ -1,6 +1,6 @@
|
|||||||
diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
|
diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
|
||||||
--- cups-1.4.5/backend/dnssd.c.avahi 2010-12-24 13:11:33.760461375 +0000
|
--- cups-1.4.5/backend/dnssd.c.avahi 2010-12-31 10:31:00.333635888 +0000
|
||||||
+++ cups-1.4.5/backend/dnssd.c 2010-12-24 13:11:38.325341226 +0000
|
+++ cups-1.4.5/backend/dnssd.c 2010-12-31 10:31:07.791916045 +0000
|
||||||
@@ -15,14 +15,21 @@
|
@@ -15,14 +15,21 @@
|
||||||
*
|
*
|
||||||
* Contents:
|
* Contents:
|
||||||
@ -264,8 +264,8 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
|
|||||||
+ 0, avahi_client_callback, NULL, &error);
|
+ 0, avahi_client_callback, NULL, &error);
|
||||||
+ if (!client)
|
+ if (!client)
|
||||||
+ {
|
+ {
|
||||||
+ perror ("ERROR: Unable to create avahi client");
|
+ perror ("DEBUG: Unable to create avahi client");
|
||||||
+ return (1);
|
+ return (0);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
|
+ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
|
||||||
@ -826,7 +826,7 @@ diff -up cups-1.4.5/backend/dnssd.c.avahi cups-1.4.5/backend/dnssd.c
|
|||||||
*/
|
*/
|
||||||
diff -up cups-1.4.5/config.h.in.avahi cups-1.4.5/config.h.in
|
diff -up cups-1.4.5/config.h.in.avahi cups-1.4.5/config.h.in
|
||||||
--- cups-1.4.5/config.h.in.avahi 2010-08-13 05:11:46.000000000 +0100
|
--- cups-1.4.5/config.h.in.avahi 2010-08-13 05:11:46.000000000 +0100
|
||||||
+++ cups-1.4.5/config.h.in 2010-12-24 13:11:38.327341170 +0000
|
+++ cups-1.4.5/config.h.in 2010-12-31 10:31:07.793916122 +0000
|
||||||
@@ -344,6 +344,13 @@
|
@@ -344,6 +344,13 @@
|
||||||
|
|
||||||
|
|
||||||
@ -843,7 +843,7 @@ diff -up cups-1.4.5/config.h.in.avahi cups-1.4.5/config.h.in
|
|||||||
|
|
||||||
diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts/cups-dnssd.m4
|
diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts/cups-dnssd.m4
|
||||||
--- cups-1.4.5/config-scripts/cups-dnssd.m4.avahi 2009-08-28 23:54:34.000000000 +0100
|
--- cups-1.4.5/config-scripts/cups-dnssd.m4.avahi 2009-08-28 23:54:34.000000000 +0100
|
||||||
+++ cups-1.4.5/config-scripts/cups-dnssd.m4 2010-12-24 13:11:38.326341199 +0000
|
+++ cups-1.4.5/config-scripts/cups-dnssd.m4 2010-12-31 10:31:07.792916086 +0000
|
||||||
@@ -27,6 +27,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn
|
@@ -27,6 +27,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn
|
||||||
DNSSDLIBS=""
|
DNSSDLIBS=""
|
||||||
DNSSD_BACKEND=""
|
DNSSD_BACKEND=""
|
||||||
@ -868,7 +868,7 @@ diff -up cups-1.4.5/config-scripts/cups-dnssd.m4.avahi cups-1.4.5/config-scripts
|
|||||||
case "$uname" in
|
case "$uname" in
|
||||||
diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
|
diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
|
||||||
--- cups-1.4.5/cups/http-support.c.avahi 2010-10-01 23:40:38.000000000 +0100
|
--- cups-1.4.5/cups/http-support.c.avahi 2010-10-01 23:40:38.000000000 +0100
|
||||||
+++ cups-1.4.5/cups/http-support.c 2010-12-24 13:11:38.330341093 +0000
|
+++ cups-1.4.5/cups/http-support.c 2010-12-31 10:31:07.795916189 +0000
|
||||||
@@ -41,6 +41,10 @@
|
@@ -41,6 +41,10 @@
|
||||||
* http_copy_decode() - Copy and decode a URI.
|
* http_copy_decode() - Copy and decode a URI.
|
||||||
* http_copy_encode() - Copy and encode a URI.
|
* http_copy_encode() - Copy and encode a URI.
|
||||||
@ -1137,9 +1137,9 @@ diff -up cups-1.4.5/cups/http-support.c.avahi cups-1.4.5/cups/http-support.c
|
|||||||
* End of "$Id: http-support.c 9322 2010-10-01 22:40:38Z mike $".
|
* End of "$Id: http-support.c 9322 2010-10-01 22:40:38Z mike $".
|
||||||
*/
|
*/
|
||||||
diff -up cups-1.4.5/scheduler/avahi.c.avahi cups-1.4.5/scheduler/avahi.c
|
diff -up cups-1.4.5/scheduler/avahi.c.avahi cups-1.4.5/scheduler/avahi.c
|
||||||
--- cups-1.4.5/scheduler/avahi.c.avahi 2010-12-24 13:11:38.333341014 +0000
|
--- cups-1.4.5/scheduler/avahi.c.avahi 2010-12-31 10:31:07.801916421 +0000
|
||||||
+++ cups-1.4.5/scheduler/avahi.c 2010-12-24 13:11:38.333341014 +0000
|
+++ cups-1.4.5/scheduler/avahi.c 2010-12-31 10:31:07.801916421 +0000
|
||||||
@@ -0,0 +1,441 @@
|
@@ -0,0 +1,443 @@
|
||||||
+/*
|
+/*
|
||||||
+ * "$Id$"
|
+ * "$Id$"
|
||||||
+ *
|
+ *
|
||||||
@ -1347,10 +1347,12 @@ diff -up cups-1.4.5/scheduler/avahi.c.avahi cups-1.4.5/scheduler/avahi.c
|
|||||||
+
|
+
|
||||||
+ watched_fd->fd = fd;
|
+ watched_fd->fd = fd;
|
||||||
+ watched_fd->occurred = 0;
|
+ watched_fd->occurred = 0;
|
||||||
|
+ watched_fd->cups_poll = cups_poll;
|
||||||
+ watched_fd->watches = cupsArrayNew ((cups_array_func_t)compare_watches,
|
+ watched_fd->watches = cupsArrayNew ((cups_array_func_t)compare_watches,
|
||||||
+ NULL);
|
+ NULL);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ watch->watched_fd = watched_fd;
|
||||||
+ cupsArrayAdd(watched_fd->watches, watch);
|
+ cupsArrayAdd(watched_fd->watches, watch);
|
||||||
+ watched_fd_add_select (watched_fd);
|
+ watched_fd_add_select (watched_fd);
|
||||||
+ return (watch);
|
+ return (watch);
|
||||||
@ -1582,8 +1584,8 @@ diff -up cups-1.4.5/scheduler/avahi.c.avahi cups-1.4.5/scheduler/avahi.c
|
|||||||
+ * End of "$Id$".
|
+ * End of "$Id$".
|
||||||
+ */
|
+ */
|
||||||
diff -up cups-1.4.5/scheduler/avahi.h.avahi cups-1.4.5/scheduler/avahi.h
|
diff -up cups-1.4.5/scheduler/avahi.h.avahi cups-1.4.5/scheduler/avahi.h
|
||||||
--- cups-1.4.5/scheduler/avahi.h.avahi 2010-12-24 13:11:38.334340988 +0000
|
--- cups-1.4.5/scheduler/avahi.h.avahi 2010-12-31 10:31:07.802916458 +0000
|
||||||
+++ cups-1.4.5/scheduler/avahi.h 2010-12-24 13:11:38.334340988 +0000
|
+++ cups-1.4.5/scheduler/avahi.h 2010-12-31 10:31:07.802916458 +0000
|
||||||
@@ -0,0 +1,49 @@
|
@@ -0,0 +1,49 @@
|
||||||
+/*
|
+/*
|
||||||
+ * "$Id$"
|
+ * "$Id$"
|
||||||
@ -1636,7 +1638,7 @@ diff -up cups-1.4.5/scheduler/avahi.h.avahi cups-1.4.5/scheduler/avahi.h
|
|||||||
+ */
|
+ */
|
||||||
diff -up cups-1.4.5/scheduler/cupsd.h.avahi cups-1.4.5/scheduler/cupsd.h
|
diff -up cups-1.4.5/scheduler/cupsd.h.avahi cups-1.4.5/scheduler/cupsd.h
|
||||||
--- cups-1.4.5/scheduler/cupsd.h.avahi 2010-09-21 23:34:57.000000000 +0100
|
--- cups-1.4.5/scheduler/cupsd.h.avahi 2010-09-21 23:34:57.000000000 +0100
|
||||||
+++ cups-1.4.5/scheduler/cupsd.h 2010-12-24 13:11:38.335340961 +0000
|
+++ cups-1.4.5/scheduler/cupsd.h 2010-12-31 10:31:07.803916494 +0000
|
||||||
@@ -147,6 +147,15 @@ extern const char *cups_hstrerror(int);
|
@@ -147,6 +147,15 @@ extern const char *cups_hstrerror(int);
|
||||||
|
|
||||||
typedef void (*cupsd_selfunc_t)(void *data);
|
typedef void (*cupsd_selfunc_t)(void *data);
|
||||||
@ -1683,9 +1685,17 @@ diff -up cups-1.4.5/scheduler/cupsd.h.avahi cups-1.4.5/scheduler/cupsd.h
|
|||||||
|
|
||||||
|
|
||||||
diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
||||||
--- cups-1.4.5/scheduler/dirsvc.c.avahi 2010-12-24 13:11:33.679463507 +0000
|
--- cups-1.4.5/scheduler/dirsvc.c.avahi 2010-12-31 10:31:00.255632958 +0000
|
||||||
+++ cups-1.4.5/scheduler/dirsvc.c 2010-12-24 13:11:38.343340751 +0000
|
+++ cups-1.4.5/scheduler/dirsvc.c 2010-12-31 10:31:07.808916680 +0000
|
||||||
@@ -99,6 +99,13 @@
|
@@ -27,6 +27,7 @@
|
||||||
|
* ldap_connect() - Start new LDAP connection
|
||||||
|
* ldap_reconnect() - Reconnect to LDAP Server
|
||||||
|
* ldap_disconnect() - Disconnect from LDAP Server
|
||||||
|
+ * cupsdStartAvahiClient() - Start an Avahi client if needed
|
||||||
|
* cupsdStartBrowsing() - Start sending and receiving broadcast
|
||||||
|
* information.
|
||||||
|
* cupsdStartPolling() - Start polling servers as needed.
|
||||||
|
@@ -99,6 +100,13 @@
|
||||||
#endif /* HAVE_DNSSD */
|
#endif /* HAVE_DNSSD */
|
||||||
|
|
||||||
|
|
||||||
@ -1699,7 +1709,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* Local functions...
|
* Local functions...
|
||||||
*/
|
*/
|
||||||
@@ -159,15 +166,20 @@ static void update_polling(void);
|
@@ -159,15 +167,20 @@ static void update_polling(void);
|
||||||
static void update_smb(int onoff);
|
static void update_smb(int onoff);
|
||||||
|
|
||||||
|
|
||||||
@ -1724,7 +1734,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
static char *dnssdPackTxtRecord(int *txt_len, char *keyvalue[][2],
|
static char *dnssdPackTxtRecord(int *txt_len, char *keyvalue[][2],
|
||||||
int count);
|
int count);
|
||||||
static void dnssdRegisterCallback(DNSServiceRef sdRef,
|
static void dnssdRegisterCallback(DNSServiceRef sdRef,
|
||||||
@@ -175,11 +187,20 @@ static void dnssdRegisterCallback(DNSSer
|
@@ -175,11 +188,20 @@ static void dnssdRegisterCallback(DNSSer
|
||||||
DNSServiceErrorType errorCode,
|
DNSServiceErrorType errorCode,
|
||||||
const char *name, const char *regtype,
|
const char *name, const char *regtype,
|
||||||
const char *domain, void *context);
|
const char *domain, void *context);
|
||||||
@ -1747,7 +1757,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
static const char * const ldap_attrs[] =/* CUPS LDAP attributes */
|
static const char * const ldap_attrs[] =/* CUPS LDAP attributes */
|
||||||
{
|
{
|
||||||
@@ -283,10 +304,10 @@ cupsdDeregisterPrinter(
|
@@ -283,10 +305,10 @@ cupsdDeregisterPrinter(
|
||||||
ldap_dereg_printer(p);
|
ldap_dereg_printer(p);
|
||||||
#endif /* HAVE_LDAP */
|
#endif /* HAVE_LDAP */
|
||||||
|
|
||||||
@ -1761,7 +1771,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -694,10 +715,10 @@ cupsdRegisterPrinter(cupsd_printer_t *p)
|
@@ -694,10 +716,10 @@ cupsdRegisterPrinter(cupsd_printer_t *p)
|
||||||
slpRegisterPrinter(p); */
|
slpRegisterPrinter(p); */
|
||||||
#endif /* HAVE_LIBSLP */
|
#endif /* HAVE_LIBSLP */
|
||||||
|
|
||||||
@ -1775,7 +1785,32 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1535,13 +1556,16 @@ cupsdStartBrowsing(void)
|
@@ -1411,6 +1433,24 @@ ldap_disconnect(LDAP *ld) /* I - LDAP h
|
||||||
|
}
|
||||||
|
#endif /* HAVE_LDAP */
|
||||||
|
|
||||||
|
+#ifdef HAVE_AVAHI
|
||||||
|
+/*
|
||||||
|
+ * 'cupsdStartAvahiClient()' - Start an Avahi client if needed
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+cupsdStartAvahiClient(void) {
|
||||||
|
+ if ((!AvahiCupsClient) &&
|
||||||
|
+ (!AvahiCupsClientConnecting || !(*AvahiCupsClientConnecting)))
|
||||||
|
+ {
|
||||||
|
+ if (!AvahiCupsPollHandle)
|
||||||
|
+ AvahiCupsPollHandle = avahi_cups_poll_new ();
|
||||||
|
+ if (AvahiCupsPollHandle)
|
||||||
|
+ avahi_client_new (avahi_cups_poll_get (AvahiCupsPollHandle),
|
||||||
|
+ AVAHI_CLIENT_NO_FAIL, avahi_client_cb, NULL, NULL);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+#endif /* HAVE_AVAHI */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 'cupsdStartBrowsing()' - Start sending and receiving broadcast information.
|
||||||
|
@@ -1535,13 +1575,16 @@ cupsdStartBrowsing(void)
|
||||||
else
|
else
|
||||||
BrowseSocket = -1;
|
BrowseSocket = -1;
|
||||||
|
|
||||||
@ -1793,7 +1828,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* First create a "master" connection for all registrations...
|
* First create a "master" connection for all registrations...
|
||||||
*/
|
*/
|
||||||
@@ -1566,6 +1590,7 @@ cupsdStartBrowsing(void)
|
@@ -1566,6 +1609,7 @@ cupsdStartBrowsing(void)
|
||||||
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
|
fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
|
||||||
|
|
||||||
cupsdAddSelect(fd, (cupsd_selfunc_t)dnssdUpdate, NULL, NULL);
|
cupsdAddSelect(fd, (cupsd_selfunc_t)dnssdUpdate, NULL, NULL);
|
||||||
@ -1801,7 +1836,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Then get the port we use for registrations. If we are not listening
|
* Then get the port we use for registrations. If we are not listening
|
||||||
@@ -1607,9 +1632,20 @@ cupsdStartBrowsing(void)
|
@@ -1607,9 +1651,16 @@ cupsdStartBrowsing(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
cupsdUpdateDNSSDName();
|
cupsdUpdateDNSSDName();
|
||||||
@ -1814,16 +1849,12 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
+
|
+
|
||||||
+#ifdef HAVE_AVAHI
|
+#ifdef HAVE_AVAHI
|
||||||
+ if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_DNSSD)
|
+ if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_DNSSD)
|
||||||
+ {
|
+ cupsdStartAvahiClient();
|
||||||
+ AvahiCupsPollHandle = avahi_cups_poll_new ();
|
|
||||||
+ avahi_client_new (avahi_cups_poll_get (AvahiCupsPollHandle),
|
|
||||||
+ 0, avahi_client_cb, NULL, NULL);
|
|
||||||
+ }
|
|
||||||
+#endif /* HAVE_AVAHI */
|
+#endif /* HAVE_AVAHI */
|
||||||
|
|
||||||
#ifdef HAVE_LIBSLP
|
#ifdef HAVE_LIBSLP
|
||||||
if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP)
|
if ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP)
|
||||||
@@ -1835,10 +1871,10 @@ cupsdStopBrowsing(void)
|
@@ -1835,10 +1886,10 @@ cupsdStopBrowsing(void)
|
||||||
BrowseSocket = -1;
|
BrowseSocket = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1837,7 +1868,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
#ifdef HAVE_LIBSLP
|
#ifdef HAVE_LIBSLP
|
||||||
if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP) &&
|
if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_SLP) &&
|
||||||
@@ -1903,7 +1939,7 @@ cupsdStopPolling(void)
|
@@ -1903,7 +1954,7 @@ cupsdStopPolling(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1846,7 +1877,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* 'cupsdUpdateDNSSDName()' - Update the computer name we use for browsing...
|
* 'cupsdUpdateDNSSDName()' - Update the computer name we use for browsing...
|
||||||
*/
|
*/
|
||||||
@@ -1911,7 +1947,12 @@ cupsdStopPolling(void)
|
@@ -1911,7 +1962,12 @@ cupsdStopPolling(void)
|
||||||
void
|
void
|
||||||
cupsdUpdateDNSSDName(void)
|
cupsdUpdateDNSSDName(void)
|
||||||
{
|
{
|
||||||
@ -1859,7 +1890,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
char webif[1024]; /* Web interface share name */
|
char webif[1024]; /* Web interface share name */
|
||||||
#ifdef HAVE_COREFOUNDATION_H
|
#ifdef HAVE_COREFOUNDATION_H
|
||||||
SCDynamicStoreRef sc; /* Context for dynamic store */
|
SCDynamicStoreRef sc; /* Context for dynamic store */
|
||||||
@@ -2043,6 +2084,7 @@ cupsdUpdateDNSSDName(void)
|
@@ -2043,6 +2099,7 @@ cupsdUpdateDNSSDName(void)
|
||||||
else
|
else
|
||||||
strlcpy(webif, "CUPS Web Interface", sizeof(webif));
|
strlcpy(webif, "CUPS Web Interface", sizeof(webif));
|
||||||
|
|
||||||
@ -1867,7 +1898,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
if (WebIFRef)
|
if (WebIFRef)
|
||||||
DNSServiceRefDeallocate(WebIFRef);
|
DNSServiceRefDeallocate(WebIFRef);
|
||||||
|
|
||||||
@@ -2055,6 +2097,42 @@ cupsdUpdateDNSSDName(void)
|
@@ -2055,6 +2112,42 @@ cupsdUpdateDNSSDName(void)
|
||||||
NULL)) != kDNSServiceErr_NoError)
|
NULL)) != kDNSServiceErr_NoError)
|
||||||
cupsdLogMessage(CUPSD_LOG_ERROR,
|
cupsdLogMessage(CUPSD_LOG_ERROR,
|
||||||
"DNS-SD web interface registration failed: %d", error);
|
"DNS-SD web interface registration failed: %d", error);
|
||||||
@ -1910,7 +1941,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_DNSSD */
|
#endif /* HAVE_DNSSD */
|
||||||
@@ -2300,162 +2378,7 @@ dequote(char *d, /* I - Destinat
|
@@ -2300,162 +2393,7 @@ dequote(char *d, /* I - Destinat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2074,7 +2105,25 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* 'dnssdComparePrinters()' - Compare the registered names of two printers.
|
* 'dnssdComparePrinters()' - Compare the registered names of two printers.
|
||||||
*/
|
*/
|
||||||
@@ -2479,6 +2402,10 @@ dnssdDeregisterPrinter(
|
@@ -2464,7 +2402,16 @@ static int /* O - Result of compariso
|
||||||
|
dnssdComparePrinters(cupsd_printer_t *a,/* I - First printer */
|
||||||
|
cupsd_printer_t *b)/* I - Second printer */
|
||||||
|
{
|
||||||
|
- return (strcasecmp(a->reg_name, b->reg_name));
|
||||||
|
+ if (!a->reg_name)
|
||||||
|
+ if (!b->reg_name)
|
||||||
|
+ return 0;
|
||||||
|
+ else
|
||||||
|
+ return -1;
|
||||||
|
+ else
|
||||||
|
+ if (!b->reg_name)
|
||||||
|
+ return 1;
|
||||||
|
+ else
|
||||||
|
+ return (strcasecmp(a->reg_name, b->reg_name));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2479,6 +2426,10 @@ dnssdDeregisterPrinter(
|
||||||
{
|
{
|
||||||
cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdDeregisterPrinter(%s)", p->name);
|
cupsdLogMessage(CUPSD_LOG_DEBUG2, "dnssdDeregisterPrinter(%s)", p->name);
|
||||||
|
|
||||||
@ -2085,7 +2134,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* Closing the socket deregisters the service
|
* Closing the socket deregisters the service
|
||||||
*/
|
*/
|
||||||
@@ -2514,6 +2441,23 @@ dnssdDeregisterPrinter(
|
@@ -2514,6 +2465,23 @@ dnssdDeregisterPrinter(
|
||||||
free(p->printer_txt);
|
free(p->printer_txt);
|
||||||
p->printer_txt = NULL;
|
p->printer_txt = NULL;
|
||||||
}
|
}
|
||||||
@ -2109,7 +2158,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove the printer from the array of DNS-SD printers, then clear the
|
* Remove the printer from the array of DNS-SD printers, then clear the
|
||||||
@@ -2526,140 +2470,53 @@ dnssdDeregisterPrinter(
|
@@ -2526,133 +2494,46 @@ dnssdDeregisterPrinter(
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2169,14 +2218,11 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
- * Allocate and fill it
|
- * Allocate and fill it
|
||||||
+ * If per-printer sharing was just disabled make sure we're not
|
- */
|
||||||
+ * registered before returning.
|
-
|
||||||
*/
|
|
||||||
|
|
||||||
- txtRecord = malloc(length);
|
- txtRecord = malloc(length);
|
||||||
- if (txtRecord)
|
- if (txtRecord)
|
||||||
+ if (!p->shared)
|
- {
|
||||||
{
|
|
||||||
- *txt_len = length;
|
- *txt_len = length;
|
||||||
-
|
-
|
||||||
- for (cursor = txtRecord, i = 0; i < count; i++)
|
- for (cursor = txtRecord, i = 0; i < count; i++)
|
||||||
@ -2273,20 +2319,12 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
- /*
|
- /*
|
||||||
- * If per-printer sharing was just disabled make sure we're not
|
- * If per-printer sharing was just disabled make sure we're not
|
||||||
- * registered before returning.
|
- * registered before returning.
|
||||||
- */
|
+ * If per-printer sharing was just disabled make sure we're not
|
||||||
-
|
+ * registered before returning.
|
||||||
- if (!p->shared)
|
*/
|
||||||
- {
|
|
||||||
- dnssdDeregisterPrinter(p);
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ dnssdDeregisterPrinter(p);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/*
|
if (!p->shared)
|
||||||
* The registered name takes the form of "<printer-info> @ <computer name>"...
|
@@ -2694,6 +2575,7 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
|
||||||
@@ -2694,6 +2551,7 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
|
|
||||||
* Register IPP and (optionally) LPD...
|
* Register IPP and (optionally) LPD...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2294,7 +2332,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
ipp_len = 0; /* anti-compiler-warning-code */
|
ipp_len = 0; /* anti-compiler-warning-code */
|
||||||
ipp_txt = dnssdBuildTxtRecord(&ipp_len, p, 0);
|
ipp_txt = dnssdBuildTxtRecord(&ipp_len, p, 0);
|
||||||
|
|
||||||
@@ -2860,6 +2718,140 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
|
@@ -2860,6 +2742,146 @@ dnssdRegisterPrinter(cupsd_printer_t *p)
|
||||||
if (printer_txt)
|
if (printer_txt)
|
||||||
free(printer_txt);
|
free(printer_txt);
|
||||||
}
|
}
|
||||||
@ -2378,6 +2416,9 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
+ "Registering Avahi printer %s with name \"%s\" and "
|
+ "Registering Avahi printer %s with name \"%s\" and "
|
||||||
+ "type \"%s\"", p->name, name, regtype);
|
+ "type \"%s\"", p->name, name, regtype);
|
||||||
+
|
+
|
||||||
|
+ if (!p->avahi_group)
|
||||||
|
+ goto add_failed;
|
||||||
|
+
|
||||||
+ ret = avahi_entry_group_add_service_strlst (p->avahi_group,
|
+ ret = avahi_entry_group_add_service_strlst (p->avahi_group,
|
||||||
+ AVAHI_IF_UNSPEC,
|
+ AVAHI_IF_UNSPEC,
|
||||||
+ AVAHI_PROTO_UNSPEC,
|
+ AVAHI_PROTO_UNSPEC,
|
||||||
@ -2418,9 +2459,12 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
+ cupsdLogMessage (CUPSD_LOG_ERROR,
|
+ cupsdLogMessage (CUPSD_LOG_ERROR,
|
||||||
+ "Failed to add Avahi entry for %s: %d",
|
+ "Failed to add Avahi entry for %s: %d",
|
||||||
+ name, ret);
|
+ name, ret);
|
||||||
+ avahi_entry_group_reset (p->avahi_group);
|
+ if (p->avahi_group)
|
||||||
+ avahi_entry_group_free (p->avahi_group);
|
+ {
|
||||||
+ p->avahi_group = NULL;
|
+ avahi_entry_group_reset (p->avahi_group);
|
||||||
|
+ avahi_entry_group_free (p->avahi_group);
|
||||||
|
+ p->avahi_group = NULL;
|
||||||
|
+ }
|
||||||
+ ipp_txt = p->ipp_txt;
|
+ ipp_txt = p->ipp_txt;
|
||||||
+ p->ipp_txt = NULL;
|
+ p->ipp_txt = NULL;
|
||||||
+ }
|
+ }
|
||||||
@ -2435,7 +2479,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2872,6 +2864,10 @@ dnssdStop(void)
|
@@ -2872,6 +2894,10 @@ dnssdStop(void)
|
||||||
{
|
{
|
||||||
cupsd_printer_t *p; /* Current printer */
|
cupsd_printer_t *p; /* Current printer */
|
||||||
|
|
||||||
@ -2446,7 +2490,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* De-register the individual printers
|
* De-register the individual printers
|
||||||
@@ -2882,6 +2878,7 @@ dnssdStop(void)
|
@@ -2882,6 +2908,7 @@ dnssdStop(void)
|
||||||
p = (cupsd_printer_t *)cupsArrayNext(Printers))
|
p = (cupsd_printer_t *)cupsArrayNext(Printers))
|
||||||
dnssdDeregisterPrinter(p);
|
dnssdDeregisterPrinter(p);
|
||||||
|
|
||||||
@ -2454,7 +2498,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
/*
|
/*
|
||||||
* Shutdown the rest of the service refs...
|
* Shutdown the rest of the service refs...
|
||||||
*/
|
*/
|
||||||
@@ -2902,6 +2899,7 @@ dnssdStop(void)
|
@@ -2902,6 +2929,7 @@ dnssdStop(void)
|
||||||
|
|
||||||
DNSServiceRefDeallocate(DNSSDRef);
|
DNSServiceRefDeallocate(DNSSDRef);
|
||||||
DNSSDRef = NULL;
|
DNSSDRef = NULL;
|
||||||
@ -2462,7 +2506,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
|
|
||||||
cupsArrayDelete(DNSSDPrinters);
|
cupsArrayDelete(DNSSDPrinters);
|
||||||
DNSSDPrinters = NULL;
|
DNSSDPrinters = NULL;
|
||||||
@@ -2911,6 +2909,272 @@ dnssdStop(void)
|
@@ -2911,6 +2939,272 @@ dnssdStop(void)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2735,7 +2779,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
* 'dnssdUpdate()' - Handle DNS-SD queries.
|
* 'dnssdUpdate()' - Handle DNS-SD queries.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2931,6 +3195,126 @@ dnssdUpdate(void)
|
@@ -2931,6 +3225,144 @@ dnssdUpdate(void)
|
||||||
#endif /* HAVE_DNSSD */
|
#endif /* HAVE_DNSSD */
|
||||||
|
|
||||||
|
|
||||||
@ -2830,26 +2874,44 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
+ * Avahi client started successfully.
|
+ * Avahi client started successfully.
|
||||||
+ */
|
+ */
|
||||||
+ AvahiCupsClient = client;
|
+ AvahiCupsClient = client;
|
||||||
|
+ AvahiCupsClientConnecting = NULL;
|
||||||
+ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client started");
|
+ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client started");
|
||||||
+
|
+
|
||||||
+ cupsdUpdateDNSSDName ();
|
+ cupsdUpdateDNSSDName ();
|
||||||
+
|
+
|
||||||
+ for (printer = (cupsd_printer_t *)cupsArrayFirst(DNSSDPrinters);
|
+ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers);
|
||||||
+ printer;
|
+ printer;
|
||||||
+ printer = (cupsd_printer_t *)cupsArrayNext(DNSSDPrinters))
|
+ printer = (cupsd_printer_t *)cupsArrayNext(Printers))
|
||||||
+ {
|
+ if (Browsing && (BrowseLocalProtocols & BROWSE_DNSSD) &&
|
||||||
+ if (!printer->avahi_group)
|
+ (!(printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT |
|
||||||
|
+ CUPS_PRINTER_SCANNER))) && printer->shared)
|
||||||
+ dnssdRegisterPrinter (printer);
|
+ dnssdRegisterPrinter (printer);
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ case AVAHI_CLIENT_CONNECTING:
|
+ case AVAHI_CLIENT_CONNECTING:
|
||||||
|
+ /*
|
||||||
|
+ * No Avahi daemon, client is waiting.
|
||||||
|
+ */
|
||||||
|
+ AvahiCupsClientConnecting = &client;
|
||||||
+ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client connecting");
|
+ cupsdLogMessage (CUPSD_LOG_DEBUG, "Avahi client connecting");
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ case AVAHI_CLIENT_FAILURE:
|
+ case AVAHI_CLIENT_FAILURE:
|
||||||
+ cupsdLogMessage (CUPSD_LOG_ERROR, "Avahi client failed");
|
+ /*
|
||||||
|
+ * Avahi client failed, close it to allow a clean restart.
|
||||||
|
+ */
|
||||||
|
+ cupsdLogMessage (CUPSD_LOG_ERROR, "Avahi client failed, closing client to allow a clean restart");
|
||||||
|
+
|
||||||
|
+ for (printer = (cupsd_printer_t *)cupsArrayFirst(Printers);
|
||||||
|
+ printer;
|
||||||
|
+ printer = (cupsd_printer_t *)cupsArrayNext(Printers))
|
||||||
|
+ dnssdDeregisterPrinter (printer);
|
||||||
|
+
|
||||||
|
+ avahi_client_free(AvahiCupsClient);
|
||||||
|
+ AvahiCupsClientConnecting = NULL;
|
||||||
|
+ AvahiCupsClient = NULL;
|
||||||
|
+
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
+ default:
|
+ default:
|
||||||
@ -2864,7 +2926,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.c.avahi cups-1.4.5/scheduler/dirsvc.c
|
|||||||
*/
|
*/
|
||||||
diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
||||||
--- cups-1.4.5/scheduler/dirsvc.h.avahi 2009-05-14 18:54:37.000000000 +0100
|
--- cups-1.4.5/scheduler/dirsvc.h.avahi 2009-05-14 18:54:37.000000000 +0100
|
||||||
+++ cups-1.4.5/scheduler/dirsvc.h 2010-12-24 13:11:38.344340724 +0000
|
+++ cups-1.4.5/scheduler/dirsvc.h 2010-12-31 10:31:07.811916792 +0000
|
||||||
@@ -32,6 +32,10 @@
|
@@ -32,6 +32,10 @@
|
||||||
# endif /* HAVE_LDAP_SSL_H */
|
# endif /* HAVE_LDAP_SSL_H */
|
||||||
#endif /* HAVE_LDAP */
|
#endif /* HAVE_LDAP */
|
||||||
@ -2902,7 +2964,7 @@ diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
|||||||
VAR DNSServiceRef DNSSDRef VALUE(NULL),
|
VAR DNSServiceRef DNSSDRef VALUE(NULL),
|
||||||
/* Master DNS-SD service reference */
|
/* Master DNS-SD service reference */
|
||||||
WebIFRef VALUE(NULL),
|
WebIFRef VALUE(NULL),
|
||||||
@@ -151,6 +158,15 @@ VAR DNSServiceRef DNSSDRef VALUE(NULL),
|
@@ -151,6 +158,17 @@ VAR DNSServiceRef DNSSDRef VALUE(NULL),
|
||||||
/* Remote printer browse reference */
|
/* Remote printer browse reference */
|
||||||
#endif /* HAVE_DNSSD */
|
#endif /* HAVE_DNSSD */
|
||||||
|
|
||||||
@ -2911,6 +2973,8 @@ diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
|||||||
+ /* AvahiCupsPoll object */
|
+ /* AvahiCupsPoll object */
|
||||||
+VAR AvahiClient *AvahiCupsClient VALUE(NULL);
|
+VAR AvahiClient *AvahiCupsClient VALUE(NULL);
|
||||||
+ /* AvahiClient object */
|
+ /* AvahiClient object */
|
||||||
|
+VAR AvahiClient **AvahiCupsClientConnecting VALUE(NULL);
|
||||||
|
+ /* AvahiClient object (waiting) */
|
||||||
+VAR AvahiEntryGroup *AvahiWebIFGroup VALUE(NULL);
|
+VAR AvahiEntryGroup *AvahiWebIFGroup VALUE(NULL);
|
||||||
+ /* Web interface entry group */
|
+ /* Web interface entry group */
|
||||||
+#endif /* HAVE_AVAHI */
|
+#endif /* HAVE_AVAHI */
|
||||||
@ -2918,7 +2982,12 @@ diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
|||||||
#ifdef HAVE_LIBSLP
|
#ifdef HAVE_LIBSLP
|
||||||
VAR SLPHandle BrowseSLPHandle VALUE(NULL);
|
VAR SLPHandle BrowseSLPHandle VALUE(NULL);
|
||||||
/* SLP API handle */
|
/* SLP API handle */
|
||||||
@@ -198,9 +214,9 @@ extern void cupsdStartBrowsing(void);
|
@@ -194,13 +212,14 @@ extern void cupsdRegisterPrinter(cupsd_p
|
||||||
|
extern void cupsdRestartPolling(void);
|
||||||
|
extern void cupsdSaveRemoteCache(void);
|
||||||
|
extern void cupsdSendBrowseList(void);
|
||||||
|
+extern void cupsdStartAvahiClient(void);
|
||||||
|
extern void cupsdStartBrowsing(void);
|
||||||
extern void cupsdStartPolling(void);
|
extern void cupsdStartPolling(void);
|
||||||
extern void cupsdStopBrowsing(void);
|
extern void cupsdStopBrowsing(void);
|
||||||
extern void cupsdStopPolling(void);
|
extern void cupsdStopPolling(void);
|
||||||
@ -2931,9 +3000,20 @@ diff -up cups-1.4.5/scheduler/dirsvc.h.avahi cups-1.4.5/scheduler/dirsvc.h
|
|||||||
extern void cupsdUpdateLDAPBrowse(void);
|
extern void cupsdUpdateLDAPBrowse(void);
|
||||||
#endif /* HAVE_LDAP */
|
#endif /* HAVE_LDAP */
|
||||||
diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
||||||
--- cups-1.4.5/scheduler/main.c.avahi 2010-12-24 13:11:33.633464718 +0000
|
--- cups-1.4.5/scheduler/main.c.avahi 2010-12-31 10:31:00.209631230 +0000
|
||||||
+++ cups-1.4.5/scheduler/main.c 2010-12-24 13:11:38.348340619 +0000
|
+++ cups-1.4.5/scheduler/main.c 2010-12-31 10:31:07.813916862 +0000
|
||||||
@@ -161,6 +161,10 @@ main(int argc, /* I - Number of comm
|
@@ -135,6 +135,10 @@ main(int argc, /* I - Number of comm
|
||||||
|
cupsd_listener_t *lis; /* Current listener */
|
||||||
|
time_t current_time, /* Current time */
|
||||||
|
activity, /* Client activity timer */
|
||||||
|
+#ifdef HAVE_AVAHI
|
||||||
|
+ avahi_client_time, /* Time for next Avahi client
|
||||||
|
+ check */
|
||||||
|
+#endif /* HAVE_AVAHI */
|
||||||
|
browse_time, /* Next browse send time */
|
||||||
|
senddoc_time, /* Send-Document time */
|
||||||
|
expire_time, /* Subscription expire time */
|
||||||
|
@@ -161,6 +165,10 @@ main(int argc, /* I - Number of comm
|
||||||
int launchd_idle_exit;
|
int launchd_idle_exit;
|
||||||
/* Idle exit on select timeout? */
|
/* Idle exit on select timeout? */
|
||||||
#endif /* HAVE_LAUNCHD */
|
#endif /* HAVE_LAUNCHD */
|
||||||
@ -2944,7 +3024,7 @@ diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
|||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_GETEUID
|
#ifdef HAVE_GETEUID
|
||||||
@@ -561,6 +565,14 @@ main(int argc, /* I - Number of comm
|
@@ -561,6 +569,14 @@ main(int argc, /* I - Number of comm
|
||||||
|
|
||||||
httpInitialize();
|
httpInitialize();
|
||||||
|
|
||||||
@ -2959,7 +3039,17 @@ diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
|||||||
cupsdStartServer();
|
cupsdStartServer();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -900,6 +912,16 @@ main(int argc, /* I - Number of comm
|
@@ -686,6 +702,9 @@ main(int argc, /* I - Number of comm
|
||||||
|
*/
|
||||||
|
|
||||||
|
current_time = time(NULL);
|
||||||
|
+#ifdef HAVE_AVAHI
|
||||||
|
+ avahi_client_time = current_time;
|
||||||
|
+#endif /* HAVE_AVAHI */
|
||||||
|
browse_time = current_time;
|
||||||
|
event_time = current_time;
|
||||||
|
expire_time = current_time;
|
||||||
|
@@ -900,6 +919,26 @@ main(int argc, /* I - Number of comm
|
||||||
}
|
}
|
||||||
#endif /* __APPLE__ */
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
@ -2971,12 +3061,22 @@ diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
|||||||
+ tmo = cupsdNextTimeout (&tmo_delay);
|
+ tmo = cupsdNextTimeout (&tmo_delay);
|
||||||
+ if (tmo && tmo_delay == 0)
|
+ if (tmo && tmo_delay == 0)
|
||||||
+ cupsdRunTimeout (tmo);
|
+ cupsdRunTimeout (tmo);
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Try to restart the Avahi client every 10 seconds if needed...
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ if ((current_time - avahi_client_time) >= 10)
|
||||||
|
+ {
|
||||||
|
+ avahi_client_time = current_time;
|
||||||
|
+ cupsdStartAvahiClient();
|
||||||
|
+ }
|
||||||
+#endif /* HAVE_AVAHI */
|
+#endif /* HAVE_AVAHI */
|
||||||
+
|
+
|
||||||
#ifndef __APPLE__
|
#ifndef __APPLE__
|
||||||
/*
|
/*
|
||||||
* Update the network interfaces once a minute...
|
* Update the network interfaces once a minute...
|
||||||
@@ -1925,6 +1947,10 @@ select_timeout(int fds) /* I - Number
|
@@ -1925,6 +1964,10 @@ select_timeout(int fds) /* I - Number
|
||||||
cupsd_job_t *job; /* Job information */
|
cupsd_job_t *job; /* Job information */
|
||||||
cupsd_subscription_t *sub; /* Subscription information */
|
cupsd_subscription_t *sub; /* Subscription information */
|
||||||
const char *why; /* Debugging aid */
|
const char *why; /* Debugging aid */
|
||||||
@ -2987,7 +3087,7 @@ diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1967,6 +1993,19 @@ select_timeout(int fds) /* I - Number
|
@@ -1967,6 +2010,19 @@ select_timeout(int fds) /* I - Number
|
||||||
}
|
}
|
||||||
#endif /* __APPLE__ */
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
@ -3008,8 +3108,8 @@ diff -up cups-1.4.5/scheduler/main.c.avahi cups-1.4.5/scheduler/main.c
|
|||||||
* Check whether we are accepting new connections...
|
* Check whether we are accepting new connections...
|
||||||
*/
|
*/
|
||||||
diff -up cups-1.4.5/scheduler/Makefile.avahi cups-1.4.5/scheduler/Makefile
|
diff -up cups-1.4.5/scheduler/Makefile.avahi cups-1.4.5/scheduler/Makefile
|
||||||
--- cups-1.4.5/scheduler/Makefile.avahi 2010-12-24 13:11:33.739461928 +0000
|
--- cups-1.4.5/scheduler/Makefile.avahi 2010-12-31 10:31:00.313635137 +0000
|
||||||
+++ cups-1.4.5/scheduler/Makefile 2010-12-24 13:11:38.332341040 +0000
|
+++ cups-1.4.5/scheduler/Makefile 2010-12-31 10:31:07.796916222 +0000
|
||||||
@@ -17,6 +17,7 @@ include ../Makedefs
|
@@ -17,6 +17,7 @@ include ../Makedefs
|
||||||
|
|
||||||
CUPSDOBJS = \
|
CUPSDOBJS = \
|
||||||
@ -3029,8 +3129,8 @@ diff -up cups-1.4.5/scheduler/Makefile.avahi cups-1.4.5/scheduler/Makefile
|
|||||||
filter.o \
|
filter.o \
|
||||||
mime.o \
|
mime.o \
|
||||||
diff -up cups-1.4.5/scheduler/printers.c.avahi cups-1.4.5/scheduler/printers.c
|
diff -up cups-1.4.5/scheduler/printers.c.avahi cups-1.4.5/scheduler/printers.c
|
||||||
--- cups-1.4.5/scheduler/printers.c.avahi 2010-12-24 13:11:33.784460744 +0000
|
--- cups-1.4.5/scheduler/printers.c.avahi 2010-12-31 10:31:00.355636715 +0000
|
||||||
+++ cups-1.4.5/scheduler/printers.c 2010-12-24 13:11:38.356340409 +0000
|
+++ cups-1.4.5/scheduler/printers.c 2010-12-31 10:31:07.822917201 +0000
|
||||||
@@ -929,10 +929,10 @@ cupsdDeletePrinter(
|
@@ -929,10 +929,10 @@ cupsdDeletePrinter(
|
||||||
cupsdClearString(&p->alert);
|
cupsdClearString(&p->alert);
|
||||||
cupsdClearString(&p->alert_description);
|
cupsdClearString(&p->alert_description);
|
||||||
@ -3101,7 +3201,7 @@ diff -up cups-1.4.5/scheduler/printers.c.avahi cups-1.4.5/scheduler/printers.c
|
|||||||
p->type |= CUPS_PRINTER_REMOTE;
|
p->type |= CUPS_PRINTER_REMOTE;
|
||||||
diff -up cups-1.4.5/scheduler/printers.h.avahi cups-1.4.5/scheduler/printers.h
|
diff -up cups-1.4.5/scheduler/printers.h.avahi cups-1.4.5/scheduler/printers.h
|
||||||
--- cups-1.4.5/scheduler/printers.h.avahi 2010-03-30 23:07:33.000000000 +0100
|
--- cups-1.4.5/scheduler/printers.h.avahi 2010-03-30 23:07:33.000000000 +0100
|
||||||
+++ cups-1.4.5/scheduler/printers.h 2010-12-24 13:11:38.357340382 +0000
|
+++ cups-1.4.5/scheduler/printers.h 2010-12-31 10:31:07.828917428 +0000
|
||||||
@@ -16,6 +16,9 @@
|
@@ -16,6 +16,9 @@
|
||||||
#ifdef HAVE_DNSSD
|
#ifdef HAVE_DNSSD
|
||||||
# include <dns_sd.h>
|
# include <dns_sd.h>
|
||||||
@ -3142,9 +3242,9 @@ diff -up cups-1.4.5/scheduler/printers.h.avahi cups-1.4.5/scheduler/printers.h
|
|||||||
|
|
||||||
|
|
||||||
diff -up cups-1.4.5/scheduler/timeout.c.avahi cups-1.4.5/scheduler/timeout.c
|
diff -up cups-1.4.5/scheduler/timeout.c.avahi cups-1.4.5/scheduler/timeout.c
|
||||||
--- cups-1.4.5/scheduler/timeout.c.avahi 2010-12-24 13:11:38.358340356 +0000
|
--- cups-1.4.5/scheduler/timeout.c.avahi 2010-12-31 10:31:07.831917542 +0000
|
||||||
+++ cups-1.4.5/scheduler/timeout.c 2010-12-24 13:11:38.358340356 +0000
|
+++ cups-1.4.5/scheduler/timeout.c 2010-12-31 10:31:07.831917542 +0000
|
||||||
@@ -0,0 +1,191 @@
|
@@ -0,0 +1,195 @@
|
||||||
+/*
|
+/*
|
||||||
+ * "$Id$"
|
+ * "$Id$"
|
||||||
+ *
|
+ *
|
||||||
@ -3296,7 +3396,11 @@ diff -up cups-1.4.5/scheduler/timeout.c.avahi cups-1.4.5/scheduler/timeout.c
|
|||||||
+void
|
+void
|
||||||
+cupsdRunTimeout(cupsd_timeout_t *timeout) /* I - Timeout */
|
+cupsdRunTimeout(cupsd_timeout_t *timeout) /* I - Timeout */
|
||||||
+{
|
+{
|
||||||
|
+ if (!timeout)
|
||||||
|
+ return;
|
||||||
+ timeout->enabled = 0;
|
+ timeout->enabled = 0;
|
||||||
|
+ if (!timeout->callback)
|
||||||
|
+ return;
|
||||||
+ timeout->callback (timeout, timeout->data);
|
+ timeout->callback (timeout, timeout->data);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
Summary: Common Unix Printing System
|
Summary: Common Unix Printing System
|
||||||
Name: cups
|
Name: cups
|
||||||
Version: 1.4.5
|
Version: 1.4.5
|
||||||
Release: 9%{?dist}
|
Release: 10%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
|
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
|
||||||
@ -599,6 +599,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{php_extdir}/phpcups.so
|
%{php_extdir}/phpcups.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Dec 31 2010 Tim Waugh <twaugh@redhat.com> 1:1.4.5-10
|
||||||
|
- Some Avahi support fixes from Till Kamppeter.
|
||||||
|
|
||||||
* Fri Dec 24 2010 Tim Waugh <twaugh@redhat.com> 1:1.4.5-9
|
* Fri Dec 24 2010 Tim Waugh <twaugh@redhat.com> 1:1.4.5-9
|
||||||
- Native Avahi support for announcing printers on the network.
|
- Native Avahi support for announcing printers on the network.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user