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 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