[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