[libvirt] [PATCH 06/21] Misc cleanup to network socket init

Daniel Veillard veillard at redhat.com
Thu Oct 29 14:47:37 UTC 2009


On Fri, Oct 23, 2009 at 02:05:35PM +0100, Daniel P. Berrange wrote:
> * 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 |   39 ++++++++++++++-------------------------
>  1 files changed, 14 insertions(+), 25 deletions(-)
> 
> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
> index fa473ce..db151cd 100644
> --- a/daemon/libvirtd.c
> +++ b/daemon/libvirtd.c
> @@ -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();
> @@ -976,25 +970,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)
>  {
> @@ -2305,6 +2287,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;
> @@ -2322,6 +2306,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) {
> @@ -3015,7 +3004,7 @@ int main(int argc, char **argv) {
>          goto error2;
>      }
>  
> -    if (!(server = qemudNetworkInit(server))) {
> +    if (qemudNetworkInit(server) < 0) {
>          ret = 2;
>          goto error2;
>      }

  It's rather hard to follow without seeing the source next to it, but
that's a nice cleanup, ACK !

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list