diff --git a/cups/dnssd.c b/cups/dnssd.c index 9bfa1bfa7..9f59b0e00 100644 --- a/cups/dnssd.c +++ b/cups/dnssd.c @@ -1685,12 +1685,26 @@ mdns_browse_cb( const char *domain, // I - Domain cups_dnssd_browse_t *browse) // I - Browse request { + char temp[256], // Temporary string + *tempptr; // Pointer into temporary string + + (void)ref; if (error != kDNSServiceErr_NoError) report_error(browse->dnssd, "DNS-SD browse error: %s", mdns_strerror(error)); - (browse->cb)(browse, browse->cb_data, mdns_to_cups(flags, error), if_index, name, regtype, domain); + // Strip trailing dot from registration/service type... + cupsCopyString(temp, regtype, sizeof(temp)); + if ((tempptr = temp + strlen(temp) - 1) >= temp && *tempptr == '.') + *tempptr = '\0'; + + // Strip leading dot from domain... + if (domain && *domain == '.') + domain ++; // Eliminate leading period + + // Call the browse callback... + (browse->cb)(browse, browse->cb_data, mdns_to_cups(flags, error), if_index, name, temp, domain); } diff --git a/cups/testdnssd.c b/cups/testdnssd.c index f6cb298f1..d7c732d3b 100644 --- a/cups/testdnssd.c +++ b/cups/testdnssd.c @@ -318,7 +318,7 @@ browse_print_cb( // Test data - printf("%5u %s.%s%s\n", if_index, name, regtype, domain); + printf("%5u %s.%s.%s\n", if_index, name, regtype, domain); cupsMutexLock(&data->mutex); data->browse_dnssd_count ++;