#include <netinet/in.h>
#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
#include <avahi-common/simple-watch.h>
#include <avahi-common/malloc.h>
#include <avahi-common/error.h>
case AVAHI_ERR_INVALID_CONFIG:
case AVAHI_ERR_TIMEOUT:
case AVAHI_ERR_DBUS_ERROR:
- case AVAHI_ERR_NOT_CONNECTED:
+ case AVAHI_ERR_DISCONNECTED:
case AVAHI_ERR_NO_DAEMON:
break;
}
int DNSSD_API DNSServiceRefSockFD(DNSServiceRef sdref) {
- assert(sdref);
- assert(sdref->n_ref >= 1);
+ if (!sdref || sdref->n_ref <= 0)
+ return -1;
AVAHI_WARN_LINKAGE;
assert(sdref->n_ref >= 1);
switch (state) {
-
- case AVAHI_CLIENT_DISCONNECTED:
+
+ case AVAHI_CLIENT_FAILURE:
if (sdref->service_browser_callback)
sdref->service_browser_callback(sdref, 0, 0, error, NULL, NULL, NULL, sdref->context);
case AVAHI_CLIENT_S_RUNNING:
case AVAHI_CLIENT_S_COLLISION:
case AVAHI_CLIENT_S_REGISTERING:
+ case AVAHI_CLIENT_CONNECTING:
break;
}
}
assert(ret_sdref);
assert(regtype);
- assert(domain);
assert(callback);
if (interface == kDNSServiceInterfaceIndexLocalOnly || flags != 0) {
ASSERT_SUCCESS(pthread_mutex_lock(&sdref->mutex));
- if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), generic_client_callback, sdref, &error))) {
+ if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), 0, generic_client_callback, sdref, &error))) {
ret = map_error(error);
goto finish;
}
ASSERT_SUCCESS(pthread_mutex_lock(&sdref->mutex));
- if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), generic_client_callback, sdref, &error))) {
+ if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), 0, generic_client_callback, sdref, &error))) {
ret = map_error(error);
goto finish;
}
ASSERT_SUCCESS(pthread_mutex_lock(&sdref->mutex));
- if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), generic_client_callback, sdref, &error))) {
+ if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), 0, generic_client_callback, sdref, &error))) {
ret = map_error(error);
goto finish;
}
assert(sdref);
assert(sdref->n_ref >= 1);
- assert(sdref->service_register_callback);
+ if (!sdref->service_register_callback)
+ return;
regtype = add_trailing_dot(sdref->service_regtype, regtype_fixed, sizeof(regtype_fixed));
domain = add_trailing_dot(sdref->service_domain, domain_fixed, sizeof(domain_fixed));
return;
switch (state) {
- case AVAHI_CLIENT_DISCONNECTED:
+ case AVAHI_CLIENT_FAILURE:
reg_report_error(sdref, kDNSServiceErr_Unknown);
break;
}
case AVAHI_CLIENT_S_COLLISION:
+ case AVAHI_CLIENT_S_REGISTERING:
/* Remove our entry */
avahi_entry_group_reset(sdref->entry_group);
break;
- case AVAHI_CLIENT_S_REGISTERING:
+ case AVAHI_CLIENT_CONNECTING:
/* Ignore */
break;
}
AVAHI_WARN_LINKAGE;
assert(ret_sdref);
- assert(callback);
assert(regtype);
if (interface == kDNSServiceInterfaceIndexLocalOnly || flags) {
ASSERT_SUCCESS(pthread_mutex_lock(&sdref->mutex));
- if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), reg_client_callback, sdref, &error))) {
+ if (!(sdref->client = avahi_client_new(avahi_simple_poll_get(sdref->simple_poll), 0, reg_client_callback, sdref, &error))) {
ret = map_error(error);
goto finish;
}