summaryrefslogtreecommitdiffstats
path: root/examples/client-publish-service.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/client-publish-service.c')
-rw-r--r--examples/client-publish-service.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/examples/client-publish-service.c b/examples/client-publish-service.c
index 96afaf3..66a59de 100644
--- a/examples/client-publish-service.c
+++ b/examples/client-publish-service.c
@@ -71,6 +71,8 @@ static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state,
case AVAHI_ENTRY_GROUP_FAILURE :
+ fprintf(stderr, "Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))));
+
/* Some kind of failure happened while we were registering our services */
avahi_simple_poll_quit(simple_poll);
break;
@@ -142,24 +144,32 @@ static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UN
create_services(c);
break;
+ case AVAHI_CLIENT_FAILURE:
+
+ fprintf(stderr, "Client failure: %s\n", avahi_strerror(avahi_client_errno(c)));
+ avahi_simple_poll_quit(simple_poll);
+
+ break;
+
case AVAHI_CLIENT_S_COLLISION:
/* Let's drop our registered services. When the server is back
* in AVAHI_SERVER_RUNNING state we will register them
* again with the new host name. */
- if (group)
- avahi_entry_group_reset(group);
- break;
- case AVAHI_CLIENT_FAILURE:
+ case AVAHI_CLIENT_S_REGISTERING:
+
+ /* The server records are now being established. This
+ * might be caused by a host name change. We need to wait
+ * for our own records to register until the host name is
+ * properly esatblished. */
- fprintf(stderr, "Client failure: %s\n", avahi_strerror(avahi_client_errno(c)));
- avahi_simple_poll_quit(simple_poll);
+ if (group)
+ avahi_entry_group_reset(group);
break;
case AVAHI_CLIENT_CONNECTING:
- case AVAHI_CLIENT_S_REGISTERING:
;
}
}