summaryrefslogtreecommitdiffstats
path: root/avahi-common/address.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-06-16 16:32:27 +0000
committerLennart Poettering <lennart@poettering.net>2005-06-16 16:32:27 +0000
commitf334deaf9d630782be3f7f535265ff7488162f85 (patch)
treeab26174979fd549479b58013e73aec8fe9efdade /avahi-common/address.c
parent969d343114a3ad07e9f1617ec1df465ca501d222 (diff)
* update avahi_address_parse() to work with AF_UNSPEC address family
* complete simple protocol * defer scanning already cached RRs when browsing into its own main loop job git-svn-id: file:///home/lennart/svn/public/avahi/trunk@114 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-common/address.c')
-rw-r--r--avahi-common/address.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/avahi-common/address.c b/avahi-common/address.c
index 3484707..3e6fc97 100644
--- a/avahi-common/address.c
+++ b/avahi-common/address.c
@@ -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;
}