]> git.meshlink.io Git - catta/blobdiff - avahi-daemon/chroot.c
fix avahi_netlink_new to allow multiple netlinks per process
[catta] / avahi-daemon / chroot.c
index 6b9876b7338eb60ab86b60df74f1735e3e09eea4..ccd56be090cc6b64d4454a5d8b4f804af7267fc2 100644 (file)
@@ -64,15 +64,15 @@ static const char* const get_file_name_table[AVAHI_CHROOT_MAX] = {
     NULL,
     "/etc/resolv.conf",
 #ifdef HAVE_DBUS
-    AVAHI_DBUS_INTROSPECTION_DIR"/Server.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/EntryGroup.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/AddressResolver.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/DomainBrowser.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/HostNameResolver.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/ServiceBrowser.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/ServiceResolver.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/ServiceTypeBrowser.introspect",
-    AVAHI_DBUS_INTROSPECTION_DIR"/RecordBrowser.introspect",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.Server.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.EntryGroup.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.AddressResolver.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.DomainBrowser.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.HostNameResolver.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.ServiceBrowser.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.ServiceResolver.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.ServiceTypeBrowser.xml",
+    AVAHI_DBUS_INTROSPECTION_DIR"/org.freedesktop.Avahi.RecordBrowser.xml",
 #endif
     NULL,
     NULL
@@ -307,8 +307,6 @@ int avahi_chroot_helper_start(const char *argv0) {
         return -1;
     } else if (pid == 0) {
 
-        setsid();
-
         /* Drop all remaining capabilities */
         avahi_caps_drop_all();
 
@@ -396,12 +394,14 @@ int avahi_chroot_helper_unlink(const char *fname) {
             return -1;
         }
 
-        if (write(helper_fd, &command, sizeof(command)) < 0) {
+        if (write(helper_fd, &command, sizeof(command)) < 0 &&
+            (errno != EPIPE && errno != ECONNRESET)) {
             avahi_log_error("write() failed: %s\n", strerror(errno));
             return -1;
         }
 
-        if ((r = read(helper_fd, &c, sizeof(c))) < 0) {
+        if ((r = read(helper_fd, &c, sizeof(c))) < 0 &&
+            (errno != EPIPE && errno != ECONNRESET)) {
             avahi_log_error("read() failed: %s\n", r < 0 ? strerror(errno) : "EOF");
             return -1;
         }