X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-compat-howl%2Fcompat.c;h=a7e280905781373061e439498f647f7674e2e526;hb=9e066af9247aac3cba6e851d445cea4e42d396f4;hp=8e8dd06f1819ab7b3f672506136d361e9967a6fd;hpb=f17d2832301b0f2fcd50fdcc6fec77666178158f;p=catta diff --git a/avahi-compat-howl/compat.c b/avahi-compat-howl/compat.c index 8e8dd06..a7e2809 100644 --- a/avahi-compat-howl/compat.c +++ b/avahi-compat-howl/compat.c @@ -380,7 +380,7 @@ sw_result sw_discovery_init(sw_discovery * self) { avahi_simple_poll_set_func((*self)->simple_poll, poll_func, *self); - if (!((*self)->client = avahi_client_new(avahi_simple_poll_get((*self)->simple_poll), client_callback, *self, &error))) { + if (!((*self)->client = avahi_client_new(avahi_simple_poll_get((*self)->simple_poll), 0, client_callback, *self, &error))) { result = map_error(error); goto fail; } @@ -694,8 +694,7 @@ static void reg_client_callback(oid_data *data, AvahiClientState state) { return; switch (state) { - case AVAHI_CLIENT_S_FAILURE: - case AVAHI_CLIENT_DISCONNECTED: + case AVAHI_CLIENT_FAILURE: reg_report_status(data, SW_DISCOVERY_PUBLISH_INVALID); break; @@ -717,7 +716,7 @@ static void reg_client_callback(oid_data *data, AvahiClientState state) { avahi_entry_group_reset(data->object); break; - case AVAHI_CLIENT_S_INVALID: + case AVAHI_CLIENT_CONNECTING: case AVAHI_CLIENT_S_REGISTERING: /* Ignore */ break; @@ -771,6 +770,7 @@ sw_result sw_discovery_publish( oid_data *data; sw_result result = SW_E_UNKNOWN; service_data *sdata; + AvahiStringList *txt = NULL; assert(self); assert(name); @@ -780,10 +780,17 @@ sw_result sw_discovery_publish( AVAHI_WARN_LINKAGE; - if ((*oid = oid_alloc(self, OID_ENTRY_GROUP)) == (sw_discovery_oid) -1) + if (text_record && text_record_len > 0) + if (avahi_string_list_parse(text_record, text_record_len, &txt) < 0) + return SW_E_UNKNOWN; + + if ((*oid = oid_alloc(self, OID_ENTRY_GROUP)) == (sw_discovery_oid) -1) { + avahi_string_list_free(txt); return SW_E_UNKNOWN; + } if (!(sdata = service_data_new(self))) { + avahi_string_list_free(txt); oid_release(self, *oid); return SW_E_MEM; } @@ -800,7 +807,7 @@ sw_result sw_discovery_publish( sdata->domain = domain ? avahi_normalize_name_strdup(domain) : NULL; sdata->host = host ? avahi_normalize_name_strdup(host) : NULL; sdata->port = port; - sdata->txt = text_record && text_record_len > 0 ? avahi_string_list_parse(text_record, text_record_len) : NULL; + sdata->txt = txt; /* Some OOM checking would be cool here */ @@ -836,10 +843,10 @@ finish: static void domain_browser_callback( AvahiDomainBrowser *b, AvahiIfIndex interface, - AvahiProtocol protocol, + AVAHI_GCC_UNUSED AvahiProtocol protocol, AvahiBrowserEvent event, const char *domain, - AvahiLookupResultFlags flags, + AVAHI_GCC_UNUSED AvahiLookupResultFlags flags, void *userdata) { oid_data* data = userdata; @@ -922,7 +929,7 @@ finish: static void service_resolver_callback( AvahiServiceResolver *r, AvahiIfIndex interface, - AvahiProtocol protocol, + AVAHI_GCC_UNUSED AvahiProtocol protocol, AvahiResolverEvent event, const char *name, const char *type, @@ -931,7 +938,7 @@ static void service_resolver_callback( const AvahiAddress *a, uint16_t port, AvahiStringList *txt, - AvahiLookupResultFlags flags, + AVAHI_GCC_UNUSED AvahiLookupResultFlags flags, void *userdata) { oid_data* data = userdata; @@ -1031,12 +1038,12 @@ finish: static void service_browser_callback( AvahiServiceBrowser *b, AvahiIfIndex interface, - AvahiProtocol protocol, + AVAHI_GCC_UNUSED AvahiProtocol protocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, - AvahiLookupResultFlags flags, + AVAHI_GCC_UNUSED AvahiLookupResultFlags flags, void *userdata) { oid_data* data = userdata;