]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
* qemud/qemud.c src/node_device_hal.c: activate DBus multithreading
authorDaniel Veillard <veillard@redhat.com>
Mon, 2 Mar 2009 11:13:37 +0000 (11:13 +0000)
committerDaniel Veillard <veillard@redhat.com>
Mon, 2 Mar 2009 11:13:37 +0000 (11:13 +0000)
  to avoid random crashes in the daemon, patch by Daniel Berrange
Daniel

ChangeLog
qemud/qemud.c
src/node_device_hal.c

index 2abfa327cee3e9b576b3e717f47e205fe975c11b..d4c583c9e22456ecd0a4ce9c46cff141d559e393 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Mar  2 12:12:11 CET 2009 Daniel Veillard <veillard@redhat.com>
+
+       * qemud/qemud.c src/node_device_hal.c: activate DBus multithreading
+         to avoid random crashes in the daemon, patch by Daniel Berrange
+
 Mon Mar 2 10:16:04 +0100 2009 Jim Meyering <meyering@redhat.com>
 
        correct a typo in a diagnostic
index 6df636870dd8fc859fec5f5a9ed3268eb0a57f92..e8528417f4ec04d7503ab1bcf20105262fc925d4 100644 (file)
@@ -911,6 +911,10 @@ static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
     if (auth_unix_rw == REMOTE_AUTH_POLKIT ||
         auth_unix_ro == REMOTE_AUTH_POLKIT) {
         DBusError derr;
+
+        dbus_connection_set_change_sigpipe(FALSE);
+        dbus_threads_init_default();
+
         dbus_error_init(&derr);
         server->sysbus = dbus_bus_get(DBUS_BUS_SYSTEM, &derr);
         if (!(server->sysbus)) {
@@ -919,6 +923,7 @@ static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
             dbus_error_free(&derr);
             goto cleanup;
         }
+        dbus_connection_set_exit_on_disconnect(server->sysbus, FALSE);
     }
 #endif
 
index cb4f86b14ee471786c0c9b3b8515a42b22a5a0e0..2a4608892231c55d72da8b8b35dd72c755b2ff3c 100644 (file)
@@ -685,6 +685,9 @@ static int halDeviceMonitorStartup(void)
     nodeDeviceLock(driverState);
 
     /* Allocate and initialize a new HAL context */
+    dbus_connection_set_change_sigpipe(FALSE);
+    dbus_threads_init_default();
+
     dbus_error_init(&err);
     hal_ctx = libhal_ctx_new();
     if (hal_ctx == NULL) {
@@ -696,6 +699,8 @@ static int halDeviceMonitorStartup(void)
         fprintf(stderr, "%s: dbus_bus_get failed\n", __FUNCTION__);
         goto failure;
     }
+    dbus_connection_set_exit_on_disconnect(dbus_conn, FALSE);
+
     if (!libhal_ctx_set_dbus_connection(hal_ctx, dbus_conn)) {
         fprintf(stderr, "%s: libhal_ctx_set_dbus_connection failed\n",
                 __FUNCTION__);