In many DNS-SD/Bonjour conditionals Avahi is not considered #4156

Closed
michaelrsweet opened this Issue Aug 4, 2012 · 2 comments

Comments

Projects
None yet
1 participant
Collaborator

michaelrsweet commented Aug 4, 2012

Version: 1.6-current
CUPS.org User: till.kamppeter

Many conditionals take only libdnssd into account and not Avahi when the code piece is generally needed for the DNS-SD/Bonjour support. This caused lots of problems on my first test of CUPS 1.6.x.

Patch attached.

It is possible that I did not find all places which need to get corrected. Please check.

Collaborator

michaelrsweet commented Aug 28, 2012

"avahi-missing-in-conditionals.patch":

diff -uraN cups/scheduler/client.c cups-new/scheduler/client.c
--- cups/scheduler/client.c 2012-05-25 15:28:49.000000000 +0200
+++ cups-new/scheduler/client.c 2012-08-04 20:13:17.082220961 +0200
@@ -4021,7 +4021,7 @@
!strncmp(host, "[::1]:", 6));
}

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
/*

  • Check if the hostname is something.local (Bonjour); if so, allow it.
    _/
    @@ -4040,7 +4040,7 @@
    !_cups_strcasecmp(end, ".local.") ||
    !cups_strncasecmp(end, ".local.:", 8)))
    return (1);
    -#endif /
    HAVE_DNSSD /
    +#endif /
    HAVE_DNSSD || HAVE_AVAHI */

    /*

  • Check if the hostname is an IP address...
    @@ -4101,7 +4101,7 @@
    }
    }

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
for (a = (cupsd_alias_t )cupsArrayFirst(DNSSDAlias);
a;
a = (cupsd_alias_t *)cupsArrayNext(DNSSDAlias))
@@ -4126,7 +4126,7 @@
return (1);
}
}
-#endif /
HAVE_DNSSD /
+#endif /
HAVE_DNSSD || HAVE_AVAHI */

/*

  • Check for interface hostname matches...
    diff -uraN cups/scheduler/conf.c cups-new/scheduler/conf.c
    --- cups/scheduler/conf.c 2012-05-25 15:28:49.000000000 +0200
    +++ cups-new/scheduler/conf.c 2012-08-04 20:15:49.830978405 +0200
    @@ -89,9 +89,9 @@
    {
    { "AccessLog", &AccessLog, CUPSD_VARTYPE_STRING },
    { "AutoPurgeJobs", &JobAutoPurge, CUPSD_VARTYPE_BOOLEAN },
    -#ifdef HAVE_DNSSD
    +#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
    { "BrowseDNSSDSubTypes", &DNSSDSubTypes, CUPSD_VARTYPE_STRING },
    -#endif /* HAVE_DNSSD /
    +#endif /
    HAVE_DNSSD || HAVE_AVAHI */
    { "BrowseWebIF", &BrowseWebIF, CUPSD_VARTYPE_BOOLEAN },
    { "Browsing", &Browsing, CUPSD_VARTYPE_BOOLEAN },
    { "CacheDir", &CacheDir, CUPSD_VARTYPE_STRING },
    @@ -735,9 +735,9 @@
    Browsing = CUPS_DEFAULT_BROWSING;
    DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED;

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
cupsdSetString(&DNSSDSubTypes, "_cups,_print");
-#endif /* HAVE_DNSSD /
+#endif /
HAVE_DNSSD || HAVE_AVAHI */

cupsdSetString(&LPDConfigFile, CUPS_DEFAULT_LPD_CONFIG_FILE);
cupsdSetString(&SMBConfigFile, CUPS_DEFAULT_SMB_CONFIG_FILE);
diff -uraN cups/scheduler/ipp.c cups-new/scheduler/ipp.c
--- cups/scheduler/ipp.c 2012-05-25 15:28:49.000000000 +0200
+++ cups-new/scheduler/ipp.c 2012-08-04 20:13:17.086220978 +0200
@@ -4813,7 +4813,7 @@
ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time",
ippTimeToDate(curtime));

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
if (!ra || cupsArrayFind(ra, "printer-dns-sd-name"))
{
if (printer->reg_name)
@@ -4823,7 +4823,7 @@
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE,
"printer-dns-sd-name", 0);
}
-#endif /* HAVE_DNSSD /
+#endif /
HAVE_DNSSD || HAVE_AVAHI */

if (!ra || cupsArrayFind(ra, "printer-error-policy"))
ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME,
diff -uraN cups/scheduler/main.c cups-new/scheduler/main.c
--- cups/scheduler/main.c 2012-05-25 15:28:49.000000000 +0200
+++ cups-new/scheduler/main.c 2012-08-04 20:13:17.090221001 +0200
@@ -781,9 +781,9 @@
* Got an error from select!
*/

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
cupsd_printer_t p; / Current printer /
-#endif /
HAVE_DNSSD /
+#endif /
HAVE_DNSSD || HAVE_AVAHI */

   if (errno == EINTR)      /* Just interrupted by a signal */

@@ -824,13 +824,13 @@
job->print_pipes[0], job->print_pipes[1],
job->back_pipes[0], job->back_pipes[1]);

-#ifdef HAVE_DNSSD
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
for (p = (cupsd_printer_t )cupsArrayFirst(Printers);
p;
p = (cupsd_printer_t *)cupsArrayNext(Printers))
cupsdLogMessage(CUPSD_LOG_EMERG, "printer[%s] reg_name="%s"", p->name,
p->reg_name ? p->reg_name : "(null)");
-#endif /
HAVE_DNSSD /
+#endif /
HAVE_DNSSD || HAVE_AVAHI */

   break;
 }
Collaborator

michaelrsweet commented Aug 28, 2012

CUPS.org User: mike

Fixed in Subversion repository.

michaelrsweet added this to the Stable milestone Mar 17, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment