]> git.meshlink.io Git - catta/blobdiff - avahi-common/address.c
* update avahi_address_parse() to work with AF_UNSPEC address family
[catta] / avahi-common / address.c
index 34847070aa30e7ff4ba79c9c63eed5a4b9722873..3e6fc9754c438ea6a2f08c7b7136919ae430734a 100644 (file)
@@ -115,10 +115,20 @@ AvahiAddress *avahi_address_parse(const char *s, guchar family, AvahiAddress *re
     g_assert(ret_addr);
     g_assert(s);
 
-    if (inet_pton(family, s, ret_addr->data.data) < 0)
-        return NULL;
-
-    ret_addr->family = family;
+    if (family == AF_UNSPEC) {
+        if (inet_pton(AF_INET, s, ret_addr->data.data) <= 0) {
+            if (inet_pton(AF_INET6, s, ret_addr->data.data) <= 0)
+                return NULL;
+            else
+                ret_addr->family = AF_INET6;
+        } else
+            ret_addr->family = AF_INET;
+    } else {
+        if (inet_pton(family, s, ret_addr->data.data) <= 0)
+            return NULL;
+        
+        ret_addr->family = family;
+    }
     
     return ret_addr;
 }