]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Misc cleanup to network socket init
authorDaniel P. Berrange <berrange@redhat.com>
Fri, 16 Oct 2009 10:24:01 +0000 (11:24 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 2 Nov 2009 16:15:01 +0000 (11:15 -0500)
* daemon/libvirtd.c: Change qemudNetworkInit() so that it doesn't try
to free its argument, leaving the caller todo cleanup as is normal
practice. Add missing policykit cleanup to qemudCleanup, and remove
server watch if set. Remove duplicated call to listen() on TCP sockets

daemon/libvirtd.c

index 7e0697528cdf5f5b425fa04f8c982f6144b723c4..6abb62ca481172b3c218115f034d489d9cc17430 100644 (file)
@@ -593,13 +593,7 @@ remoteMakeSockets (int *fds, int max_fds, int *nfds_r, const char *node, const c
                 return -1;
             }
             close (fds[*nfds_r]);
-        }
-        else {
-            if (listen (fds[*nfds_r], SOMAXCONN) == -1) {
-                VIR_ERROR(_("listen: %s"),
-                          virStrerror (errno, ebuf, sizeof ebuf));
-                return -1;
-            }
+        } else {
             ++*nfds_r;
         }
         runp = runp->ai_next;
@@ -867,8 +861,7 @@ static struct qemud_server *qemudInitialize(int sigread) {
     return server;
 }
 
-static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
-    struct qemud_socket *sock;
+static int qemudNetworkInit(struct qemud_server *server) {
     char sockname[PATH_MAX];
     char roSockname[PATH_MAX];
 #if HAVE_SASL
@@ -935,6 +928,7 @@ static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
 #ifdef HAVE_AVAHI
     if (server->privileged && mdns_adv) {
         struct libvirtd_mdns_group *group;
+        struct qemud_socket *sock;
         int port = 0;
 
         server->mdns = libvirtd_mdns_new();
@@ -980,25 +974,13 @@ static struct qemud_server *qemudNetworkInit(struct qemud_server *server) {
     }
 #endif
 
-    return server;
+    return 0;
 
  cleanup:
-    if (server) {
-        sock = server->sockets;
-        while (sock) {
-            close(sock->fd);
-            sock = sock->next;
-        }
-
-#if HAVE_POLKIT0
-        if (server->sysbus)
-            dbus_connection_unref(server->sysbus);
-#endif
-        free(server);
-    }
-    return NULL;
+    return -1;
 }
 
+
 static gnutls_session_t
 remoteInitializeTLSSession (void)
 {
@@ -2309,6 +2291,8 @@ static void qemudCleanup(struct qemud_server *server) {
     sock = server->sockets;
     while (sock) {
         struct qemud_socket *next = sock->next;
+        if (sock->watch)
+            virEventRemoveHandleImpl(sock->watch);
         close(sock->fd);
         free(sock);
         sock = next;
@@ -2326,6 +2310,11 @@ static void qemudCleanup(struct qemud_server *server) {
     }
 #endif
 
+#if HAVE_POLKIT0
+        if (server->sysbus)
+            dbus_connection_unref(server->sysbus);
+#endif
+
     virStateCleanup();
 
     if (virCondDestroy(&server->job) < 0) {
@@ -3016,7 +3005,7 @@ int main(int argc, char **argv) {
         goto error2;
     }
 
-    if (!(server = qemudNetworkInit(server))) {
+    if (qemudNetworkInit(server) < 0) {
         ret = 2;
         goto error2;
     }