]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Correct mishandling of avahi poll-thread error conditions. This was causing Shairport...
authorMke Brady <mikebrady@eircom.net>
Thu, 17 Mar 2016 09:41:32 +0000 (09:41 +0000)
committerMke Brady <mikebrady@eircom.net>
Thu, 17 Mar 2016 09:41:32 +0000 (09:41 +0000)
configure.ac
mdns_avahi.c

index 835fdabc071367e9a511c058c7aba748a87f50bf..190a2227568ad0e22acd13293612828cdf2ce2ed 100644 (file)
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.50])
-AC_INIT([shairport-sync], [2.9.3], [mikebrady@eircom.net])
+AC_INIT([shairport-sync], [2.9.4], [mikebrady@eircom.net])
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([shairport.c])
 AC_CONFIG_HEADERS([config.h])
index 31800b8bb1034d136f8517bcf28aeb9802935f34..8d5e60f7f0ddc44df52db204d8ad10b551543b0b 100644 (file)
@@ -45,9 +45,9 @@ static int port = 0;
 static void egroup_callback(AvahiEntryGroup *g, AvahiEntryGroupState state,
                             AVAHI_GCC_UNUSED void *userdata) {
   if (state == AVAHI_ENTRY_GROUP_COLLISION)
-    die("service name already exists on network!");
+    warn("Service name already exists on network!");
   if (state == AVAHI_ENTRY_GROUP_FAILURE)
-    die("avahi entry group failure!");
+    warn("Avahi entry group failure!");
 }
 
 static void register_service(AvahiClient *c) {
@@ -55,34 +55,37 @@ static void register_service(AvahiClient *c) {
   if (!group)
     group = avahi_entry_group_new(c, egroup_callback, NULL);
   if (!group)
-    die("avahi_entry_group_new failed");
-
-  if (!avahi_entry_group_is_empty(group))
-    return;
-
-  int ret;
-#ifdef CONFIG_METADATA
-  if (config.metadata_enabled) {
-    debug(1, "Avahi with metadata");
-    ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, name,
-                                        "_raop._tcp", NULL, NULL, port, MDNS_RECORD_WITH_METADATA,
-                                        NULL);
-  } else {
-#endif
-    debug(1, "Avahi without metadata");
-    ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, name,
-                                        "_raop._tcp", NULL, NULL, port,
-                                        MDNS_RECORD_WITHOUT_METADATA, NULL);
-#ifdef CONFIG_METADATA
+    warn("avahi_entry_group_new failed");
+  else {
+
+    if (!avahi_entry_group_is_empty(group))
+      return;
+
+    int ret;
+  #ifdef CONFIG_METADATA
+    if (config.metadata_enabled) {
+      debug(1, "Avahi with metadata");
+      ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, name,
+                                          "_raop._tcp", NULL, NULL, port, MDNS_RECORD_WITH_METADATA,
+                                          NULL);
+    } else {
+  #endif
+      debug(1, "Avahi without metadata");
+      ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, name,
+                                          "_raop._tcp", NULL, NULL, port,
+                                          MDNS_RECORD_WITHOUT_METADATA, NULL);
+  #ifdef CONFIG_METADATA
+    }
+  #endif
+
+    if (ret < 0)
+      warn("avahi_entry_group_add_service failed");
+    else {
+      ret = avahi_entry_group_commit(group);
+      if (ret < 0)
+        warn("avahi_entry_group_commit failed");
+    }
   }
-#endif
-
-  if (ret < 0)
-    die("avahi_entry_group_add_service failed");
-
-  ret = avahi_entry_group_commit(group);
-  if (ret < 0)
-    die("avahi_entry_group_commit failed");
 }
 
 static void client_callback(AvahiClient *c, AvahiClientState state,
@@ -99,7 +102,8 @@ static void client_callback(AvahiClient *c, AvahiClientState state,
 
   case AVAHI_CLIENT_FAILURE:
   case AVAHI_CLIENT_S_COLLISION:
-    die("avahi client failure");
+    debug(1,"avahi client failure");
+    break;
 
   case AVAHI_CLIENT_CONNECTING:
     break;