]> git.meshlink.io Git - catta/blobdiff - avahi-daemon/chroot.c
Fix registration of really large records, like it is necessary for XEP-0174 (jabber...
[catta] / avahi-daemon / chroot.c
index 3cace267147f4d571ca7594f55c18bc8b30de94d..20e2f03596eb35e6c5aedce0559d6db111fd695b 100644 (file)
@@ -54,6 +54,7 @@ enum {
     AVAHI_CHROOT_GET_SERVICE_BROWSER_INTROSPECT,
     AVAHI_CHROOT_GET_SERVICE_RESOLVER_INTROSPECT,
     AVAHI_CHROOT_GET_SERVICE_TYPE_BROWSER_INTROSPECT,
+    AVAHI_CHROOT_GET_RECORD_BROWSER_INTROSPECT,
 #endif
     AVAHI_CHROOT_UNLINK_PID,
     AVAHI_CHROOT_UNLINK_SOCKET,
@@ -73,6 +74,7 @@ static const char* const get_file_name_table[AVAHI_CHROOT_MAX] = {
     AVAHI_DBUS_INTROSPECTION_DIR"/ServiceBrowser.introspect",
     AVAHI_DBUS_INTROSPECTION_DIR"/ServiceResolver.introspect",
     AVAHI_DBUS_INTROSPECTION_DIR"/ServiceTypeBrowser.introspect",
+    AVAHI_DBUS_INTROSPECTION_DIR"/RecordBrowser.introspect",
 #endif
     NULL,
     NULL
@@ -91,6 +93,7 @@ static const char *const unlink_file_name_table[AVAHI_CHROOT_MAX] = {
     NULL,
     NULL,
     NULL,
+    NULL,
 #endif
     AVAHI_DAEMON_RUNTIME_DIR"/pid",
     AVAHI_SOCKET
@@ -233,6 +236,7 @@ static int helper_main(int fd) {
             case AVAHI_CHROOT_GET_SERVICE_BROWSER_INTROSPECT:
             case AVAHI_CHROOT_GET_SERVICE_RESOLVER_INTROSPECT:
             case AVAHI_CHROOT_GET_SERVICE_TYPE_BROWSER_INTROSPECT:
+            case AVAHI_CHROOT_GET_RECORD_BROWSER_INTROSPECT:
 #endif
             case AVAHI_CHROOT_GET_RESOLV_CONF: {
                 int payload;
@@ -298,17 +302,21 @@ int avahi_chroot_helper_start(const char *argv0) {
         return -1;
     }
     
-    if ((pid = daemon_fork()) < 0) {
+    if ((pid = fork()) < 0) {
         close(sock[0]);
         close(sock[1]);
-        avahi_log_error(__FILE__": Failed to fork()");
+        avahi_log_error(__FILE__": fork() failed: %s", strerror(errno));
         return -1;
     } else if (pid == 0) {
+
+        setsid();
         
         /* Drop all remaining capabilities */
         avahi_caps_drop_all();
 
-        avahi_set_proc_title("%s: chroot helper process", argv0);
+        avahi_set_proc_title(argv0, "%s: chroot helper", argv0);
+
+        daemon_retval_done();
         
         close(sock[0]);
         helper_main(sock[1]);