[libvirt] [PATCH 2/6] Add backlog parameter to virNetSocketListen

Daniel Veillard veillard at redhat.com
Mon Aug 15 09:36:37 UTC 2011


On Mon, Aug 15, 2011 at 09:58:12AM +0200, Jiri Denemark wrote:
> So that callers can change the default value.
> ---
>  src/rpc/virnetserverservice.c |    4 ++--
>  src/rpc/virnetsocket.c        |    4 ++--
>  src/rpc/virnetsocket.h        |    2 +-
>  tests/virnetsockettest.c      |    6 +++---
>  4 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/src/rpc/virnetserverservice.c b/src/rpc/virnetserverservice.c
> index 8c9ed1e..e63603f 100644
> --- a/src/rpc/virnetserverservice.c
> +++ b/src/rpc/virnetserverservice.c
> @@ -127,7 +127,7 @@ virNetServerServicePtr virNetServerServiceNewTCP(const char *nodename,
>          goto error;
>  
>      for (i = 0 ; i < svc->nsocks ; i++) {
> -        if (virNetSocketListen(svc->socks[i]) < 0)
> +        if (virNetSocketListen(svc->socks[i], 0) < 0)
>              goto error;
>  
>          /* IO callback is initially disabled, until we're ready
> @@ -187,7 +187,7 @@ virNetServerServicePtr virNetServerServiceNewUNIX(const char *path,
>          goto error;
>  
>      for (i = 0 ; i < svc->nsocks ; i++) {
> -        if (virNetSocketListen(svc->socks[i]) < 0)
> +        if (virNetSocketListen(svc->socks[i], 0) < 0)
>              goto error;
>  
>          /* IO callback is initially disabled, until we're ready
> diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
> index c222743..c19dcfa 100644
> --- a/src/rpc/virnetsocket.c
> +++ b/src/rpc/virnetsocket.c
> @@ -1076,10 +1076,10 @@ ssize_t virNetSocketWrite(virNetSocketPtr sock, const char *buf, size_t len)
>  }
>  
>  
> -int virNetSocketListen(virNetSocketPtr sock)
> +int virNetSocketListen(virNetSocketPtr sock, int backlog)
>  {
>      virMutexLock(&sock->lock);
> -    if (listen(sock->fd, 30) < 0) {
> +    if (listen(sock->fd, backlog > 0 ? backlog : 30) < 0) {

  Okay that's where we override the old default ...

>          virReportSystemError(errno, "%s", _("Unable to listen on socket"));
>          virMutexUnlock(&sock->lock);
>          return -1;
> diff --git a/src/rpc/virnetsocket.h b/src/rpc/virnetsocket.h
> index d6c85d2..24110a6 100644
> --- a/src/rpc/virnetsocket.h
> +++ b/src/rpc/virnetsocket.h
> @@ -105,7 +105,7 @@ void virNetSocketFree(virNetSocketPtr sock);
>  const char *virNetSocketLocalAddrString(virNetSocketPtr sock);
>  const char *virNetSocketRemoteAddrString(virNetSocketPtr sock);
>  
> -int virNetSocketListen(virNetSocketPtr sock);
> +int virNetSocketListen(virNetSocketPtr sock, int backlog);
>  int virNetSocketAccept(virNetSocketPtr sock,
>                         virNetSocketPtr *clientsock);
>  
> diff --git a/tests/virnetsockettest.c b/tests/virnetsockettest.c
> index e72b9a0..fba7e15 100644
> --- a/tests/virnetsockettest.c
> +++ b/tests/virnetsockettest.c
> @@ -159,7 +159,7 @@ static int testSocketTCPAccept(const void *opaque)
>          goto cleanup;
>  
>      for (i = 0 ; i < nlsock ; i++) {
> -        if (virNetSocketListen(lsock[i]) < 0)
> +        if (virNetSocketListen(lsock[i], 0) < 0)
>              goto cleanup;
>      }
>  
> @@ -217,7 +217,7 @@ static int testSocketUNIXAccept(const void *data ATTRIBUTE_UNUSED)
>      if (virNetSocketNewListenUNIX(path, 0700, getgid(), &lsock) < 0)
>          goto cleanup;
>  
> -    if (virNetSocketListen(lsock) < 0)
> +    if (virNetSocketListen(lsock, 0) < 0)
>          goto cleanup;
>  
>      if (virNetSocketNewConnectUNIX(path, false, NULL, &csock) < 0)
> @@ -276,7 +276,7 @@ static int testSocketUNIXAddrs(const void *data ATTRIBUTE_UNUSED)
>          goto cleanup;
>      }
>  
> -    if (virNetSocketListen(lsock) < 0)
> +    if (virNetSocketListen(lsock, 0) < 0)
>          goto cleanup;
>  
>      if (virNetSocketNewConnectUNIX(path, false, NULL, &csock) < 0)

  Assuming that the facts it compiles prove that all cases got covered,

    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