[Spice-devel] [PATCH 2/6] Rename __reds_accept_connection into reds_init_client_connection

Marc-André Lureau marcandre.lureau at gmail.com
Wed Oct 26 06:29:55 PDT 2011


Hi

I would move the cb intialization in reds_init_client_connection () to
avoid duplication:

    stream = link->stream;
    stream->read = stream_read_cb;
    stream->write = stream_write_cb;
    stream->writev = stream_writev_cb;

It will be overwritten in reds_init_client_ssl_connection ().

On Fri, Oct 21, 2011 at 5:11 PM, Daniel P. Berrange <berrange at redhat.com> wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> Remove the accept() call from __reds_accept_connection and
> rename it to reds_init_client_connection. The caller is now
> responsible for accepting the new socket. The method
> reds_init_client_connection merely initializes it for
> usage.
>
> * server/reds.c: Add reds_init_client_connection
>
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  server/reds.c |   31 ++++++++++++++++++-------------
>  1 files changed, 18 insertions(+), 13 deletions(-)
>
> diff --git a/server/reds.c b/server/reds.c
> index e3dd7bf..e7c9512 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -2582,18 +2582,12 @@ static void reds_handle_ssl_accept(int fd, int event, void *data)
>     reds_handle_new_link(link);
>  }
>
> -static RedLinkInfo *__reds_accept_connection(int listen_socket)
> +static RedLinkInfo *reds_init_client_connection(int socket)
>  {
>     RedLinkInfo *link;
>     RedsStream *stream;
>     int delay_val = 1;
>     int flags;
> -    int socket;
> -
> -    if ((socket = accept(listen_socket, NULL, 0)) == -1) {
> -        red_printf("accept failed, %s", strerror(errno));
> -        return NULL;
> -    }
>
>     if ((flags = fcntl(socket, F_GETFL)) == -1) {
>         red_printf("accept failed, %s", strerror(errno));
> @@ -2626,8 +2620,6 @@ static RedLinkInfo *__reds_accept_connection(int listen_socket)
>     return link;
>
>  error:
> -    close(socket);
> -
>     return NULL;
>  }
>
> @@ -2638,12 +2630,17 @@ static void reds_accept_ssl_connection(int fd, int event, void *data)
>     int return_code;
>     int ssl_error;
>     BIO *sbio;
> +    int socket;
>
> -    link = __reds_accept_connection(reds->secure_listen_socket);
> -    if (link == NULL) {
> +    if ((socket = accept(reds->secure_listen_socket, NULL, 0)) == -1) {
> +        red_printf("accept failed, %s", strerror(errno));
>         return;
>     }
>
> +    link = reds_init_client_connection(socket);
> +    if (link == NULL)
> +        goto error;
> +
>     // Handle SSL handshaking
>     if (!(sbio = BIO_new_socket(link->stream->socket, BIO_NOCLOSE))) {
>         red_printf("could not allocate ssl bio socket");
> @@ -2684,7 +2681,7 @@ static void reds_accept_ssl_connection(int fd, int event, void *data)
>     SSL_free(link->stream->ssl);
>
>  error:
> -    close(link->stream->socket);
> +    close(socket);
>     free(link->stream);
>     BN_free(link->tiTicketing.bn);
>     free(link);
> @@ -2694,9 +2691,17 @@ static void reds_accept(int fd, int event, void *data)
>  {
>     RedLinkInfo *link;
>     RedsStream *stream;
> +    int socket;
> +
> +    if ((socket = accept(reds->listen_socket, NULL, 0)) == -1) {
> +        red_printf("accept failed, %s", strerror(errno));
> +        return;
> +    }
> +
>
> -    if (!(link = __reds_accept_connection(reds->listen_socket))) {
> +    if (!(link = reds_init_client_connection(socket))) {
>         red_printf("accept failed");
> +        close(socket);
>         return;
>     }
>
> --
> 1.7.6.4
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>



-- 
Marc-André Lureau


More information about the Spice-devel mailing list