]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix initialization order bugs
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 16 Oct 2009 10:29:01 +0000 (11:29 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 2 Nov 2009 16:21:22 +0000 (11:21 -0500)
virInitialize must be the first libvirt function called to ensure
threads, error handling & random number generator are all setup.

Move UNIX socket directory permissions change to place of use

daemon/libvirtd.c

index 6abb62ca481172b3c218115f034d489d9cc17430..c5f90b5266dacf0ffe9b2542237e789676a5c387 100644 (file)
@@ -700,9 +700,15 @@ static int qemudInitPaths(struct qemud_server *server,
     int ret = -1;
     char *sock_dir_prefix = NULL;
 
-    if (unix_sock_dir)
+    if (unix_sock_dir) {
         sock_dir = unix_sock_dir;
-    else {
+        /* Change the group ownership of /var/run/libvirt to unix_sock_gid */
+        if (server->privileged) {
+            if (chown(unix_sock_dir, -1, unix_sock_gid) < 0)
+                VIR_ERROR(_("Failed to change group ownership of %s"),
+                          unix_sock_dir);
+        }
+    } else {
         sock_dir = sockname;
         if (server->privileged) {
             dir_prefix = strdup (LOCAL_STATE_DIR);
@@ -797,8 +803,6 @@ static struct qemud_server *qemudInitialize(int sigread) {
         return NULL;
     }
 
-    virInitialize();
-
     /*
      * Note that the order is important: the first ones have a higher
      * priority when calling virStateInitialize. We must register
@@ -2847,6 +2851,8 @@ int main(int argc, char **argv) {
         {0, 0, 0, 0}
     };
 
+    virInitialize();
+
     while (1) {
         int optidx = 0;
         int c;
@@ -2989,13 +2995,6 @@ int main(int argc, char **argv) {
     if (remoteReadConfigFile (server, remote_config_file) < 0)
         goto error2;
 
-    /* Change the group ownership of /var/run/libvirt to unix_sock_gid */
-    if (unix_sock_dir && server->privileged) {
-        if (chown(unix_sock_dir, -1, unix_sock_gid) < 0)
-            VIR_ERROR(_("Failed to change group ownership of %s"),
-                      unix_sock_dir);
-    }
-
     if (virEventAddHandleImpl(sigpipe[0],
                               VIR_EVENT_HANDLE_READABLE,
                               qemudDispatchSignalEvent,