]> git.meshlink.io Git - catta/blobdiff - avahi-compat-libdns_sd/compat.c
limit allowed flags to avahi_server_add_service_subtype()
[catta] / avahi-compat-libdns_sd / compat.c
index 373a980f0ccefbc987ba3dffe3c0d6d8c78e58de..e09099d6b6f4f3afd0f03318a2795201c4c641a9 100644 (file)
@@ -99,6 +99,7 @@ static DNSServiceErrorType map_error(int error) {
         case AVAHI_ERR_INVALID_PORT:
         case AVAHI_ERR_INVALID_KEY:
         case AVAHI_ERR_INVALID_ADDRESS:
+        case AVAHI_ERR_INVALID_SERVICE_SUBTYPE:
             return kDNSServiceErr_BadParam;
 
 
@@ -509,8 +510,10 @@ DNSServiceErrorType DNSSD_API DNSServiceBrowse(
     assert(domain);
     assert(callback);
 
-    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags != 0)
+    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags != 0) {
+        AVAHI_WARN_UNSUPPORTED;
         return kDNSServiceErr_Unsupported;
+    }
 
     if (!(sdref = sdref_new()))
         return kDNSServiceErr_Unknown;
@@ -580,7 +583,7 @@ static void service_resolver_callback(
             if ((p = avahi_new0(char, (l = avahi_string_list_serialize(txt, NULL, 0))+1)))
                 avahi_string_list_serialize(txt, p, l);
 
-            ret = avahi_service_name_snprint(full_name, sizeof(full_name), name, type, domain);
+            ret = avahi_service_name_join(full_name, sizeof(full_name), name, type, domain);
             assert(ret == AVAHI_OK);
 
             strcat(full_name, ".");
@@ -625,8 +628,10 @@ DNSServiceErrorType DNSSD_API DNSServiceResolve(
     assert(domain);
     assert(callback);
 
-    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags != 0)
+    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags != 0) {
+        AVAHI_WARN_UNSUPPORTED;
         return kDNSServiceErr_Unsupported;
+    }
 
     if (!(sdref = sdref_new()))
         return kDNSServiceErr_Unknown;
@@ -674,7 +679,7 @@ int DNSSD_API DNSServiceConstructFullName (
     assert(regtype);
     assert(domain);
 
-    if (avahi_service_name_snprint(fullName, kDNSServiceMaxDomainName, service, regtype, domain) < 0)
+    if (avahi_service_name_join(fullName, kDNSServiceMaxDomainName, service, regtype, domain) < 0)
         return -1;
     
     return 0;
@@ -739,8 +744,10 @@ DNSServiceErrorType DNSSD_API DNSServiceEnumerateDomains(
     assert(callback);
 
     if (interface == kDNSServiceInterfaceIndexLocalOnly ||
-        (flags != kDNSServiceFlagsBrowseDomains &&  flags != kDNSServiceFlagsRegistrationDomains))
+        (flags != kDNSServiceFlagsBrowseDomains &&  flags != kDNSServiceFlagsRegistrationDomains)) {
+        AVAHI_WARN_UNSUPPORTED;
         return kDNSServiceErr_Unsupported;
+    }
 
     if (!(sdref = sdref_new()))
         return kDNSServiceErr_Unknown;
@@ -757,7 +764,7 @@ DNSServiceErrorType DNSSD_API DNSServiceEnumerateDomains(
 
     ifindex = interface == kDNSServiceInterfaceIndexAny ? AVAHI_IF_UNSPEC : (AvahiIfIndex) interface;
     
-    if (!(sdref->domain_browser = avahi_domain_browser_new(sdref->client, ifindex, AVAHI_PROTO_UNSPEC, NULL,
+    if (!(sdref->domain_browser = avahi_domain_browser_new(sdref->client, ifindex, AVAHI_PROTO_UNSPEC, "local",
                                                            flags == kDNSServiceFlagsRegistrationDomains ? AVAHI_DOMAIN_BROWSER_REGISTER : AVAHI_DOMAIN_BROWSER_BROWSE,
                                                            0, domain_browser_callback, sdref))) {
         ret = map_error(avahi_client_errno(sdref->client));
@@ -952,8 +959,10 @@ DNSServiceErrorType DNSSD_API DNSServiceRegister (
     assert(callback);
     assert(regtype);
 
-    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags)
+    if (interface == kDNSServiceInterfaceIndexLocalOnly || flags) {
+        AVAHI_WARN_UNSUPPORTED;
         return kDNSServiceErr_Unsupported;
+    }
 
     if (!(sdref = sdref_new()))
         return kDNSServiceErr_Unknown;
@@ -962,9 +971,9 @@ DNSServiceErrorType DNSSD_API DNSServiceRegister (
     sdref->service_register_callback = callback;
 
     sdref->service_name = avahi_strdup(name);
-    sdref->service_regtype = regtype ? avahi_normalize_name(regtype) : NULL;
-    sdref->service_domain = domain ? avahi_normalize_name(domain) : NULL;
-    sdref->service_host = host ? avahi_normalize_name(host) : NULL;
+    sdref->service_regtype = regtype ? avahi_normalize_name_strdup(regtype) : NULL;
+    sdref->service_domain = domain ? avahi_normalize_name_strdup(domain) : NULL;
+    sdref->service_host = host ? avahi_normalize_name_strdup(host) : NULL;
     sdref->service_interface = interface == kDNSServiceInterfaceIndexAny ? AVAHI_IF_UNSPEC : (AvahiIfIndex) interface;
     sdref->service_port = ntohs(port);
     sdref->service_txt = txtRecord ? avahi_string_list_parse(txtRecord, txtLen) : NULL;