[Spice-devel] [PATCH 06/26] server/red_channel (all): add peer to config_socket sig
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Feb 14 17:43:51 PST 2011
Motivation? (it's loss of encapsulation, imho)
On Fri, Feb 11, 2011 at 6:48 PM, Alon Levy <alevy at redhat.com> wrote:
> ---
> server/inputs_channel.c | 8 ++++----
> server/main_channel.c | 2 +-
> server/red_channel.c | 2 +-
> server/red_channel.h | 2 +-
> server/red_tunnel_worker.c | 8 ++++----
> server/red_worker.c | 3 +--
> server/smartcard.c | 2 +-
> 7 files changed, 13 insertions(+), 14 deletions(-)
>
> diff --git a/server/inputs_channel.c b/server/inputs_channel.c
> index ee0e833..8346e47 100644
> --- a/server/inputs_channel.c
> +++ b/server/inputs_channel.c
> @@ -485,19 +485,19 @@ static void inputs_pipe_add_init(InputsChannel *inputs_channel)
> red_channel_pipe_add_push(&inputs_channel->base, &item->base);
> }
>
> -static int inputs_channel_config_socket(RedChannel *channel)
> +static int inputs_channel_config_socket(RedChannel *channel, RedsStreamContext *peer)
> {
> int flags;
> int delay_val = 1;
>
> - if (setsockopt(channel->peer->socket, IPPROTO_TCP, TCP_NODELAY,
> + if (setsockopt(peer->socket, IPPROTO_TCP, TCP_NODELAY,
> &delay_val, sizeof(delay_val)) == -1) {
> red_printf("setsockopt failed, %s", strerror(errno));
> return FALSE;
> }
>
> - if ((flags = fcntl(channel->peer->socket, F_GETFL)) == -1 ||
> - fcntl(channel->peer->socket, F_SETFL, flags | O_ASYNC) == -1) {
> + if ((flags = fcntl(peer->socket, F_GETFL)) == -1 ||
> + fcntl(peer->socket, F_SETFL, flags | O_ASYNC) == -1) {
> red_printf("fcntl failed, %s", strerror(errno));
> return FALSE;
> }
> diff --git a/server/main_channel.c b/server/main_channel.c
> index 9c5cc74..21e0156 100644
> --- a/server/main_channel.c
> +++ b/server/main_channel.c
> @@ -776,7 +776,7 @@ static void main_channel_release_msg_rcv_buf(RedChannel *channel, SpiceDataHeade
> {
> }
>
> -static int main_channel_config_socket(RedChannel *channel)
> +static int main_channel_config_socket(RedChannel *channel, RedsStreamContext *peer)
> {
> return TRUE;
> }
> diff --git a/server/red_channel.c b/server/red_channel.c
> index b729e9f..bd61685 100644
> --- a/server/red_channel.c
> +++ b/server/red_channel.c
> @@ -369,7 +369,7 @@ RedChannel *red_channel_create(int size, RedsStreamContext *peer,
>
> channel->shut = 0; // came here from inputs, perhaps can be removed? XXX
>
> - if (!config_socket(channel)) {
> + if (!config_socket(channel, peer)) {
> goto error;
> }
>
> diff --git a/server/red_channel.h b/server/red_channel.h
> index 83cbbde..04b8aba 100644
> --- a/server/red_channel.h
> +++ b/server/red_channel.h
> @@ -115,7 +115,7 @@ typedef int (*channel_handle_message_proc)(RedChannel *channel,
> typedef void (*channel_release_msg_recv_buf_proc)(RedChannel *channel,
> SpiceDataHeader *msg_header, uint8_t *msg);
> typedef void (*channel_disconnect_proc)(RedChannel *channel);
> -typedef int (*channel_configure_socket_proc)(RedChannel *channel);
> +typedef int (*channel_configure_socket_proc)(RedChannel *channel, RedsStreamContext *peer);
> typedef void (*channel_send_pipe_item_proc)(RedChannel *channel, SpiceMarshaller *m, PipeItem *item);
> typedef void (*channel_hold_pipe_item_proc)(RedChannel *channel, PipeItem *item);
> typedef void (*channel_release_pipe_item_proc)(RedChannel *channel,
> diff --git a/server/red_tunnel_worker.c b/server/red_tunnel_worker.c
> index 10948b4..8fa70d6 100644
> --- a/server/red_tunnel_worker.c
> +++ b/server/red_tunnel_worker.c
> @@ -3331,24 +3331,24 @@ static void arm_timer(SlirpUsrNetworkInterface *usr_interface, UserTimer *timer,
> * channel interface and other related procedures
> ************************************************/
>
> -static int tunnel_channel_config_socket(RedChannel *channel)
> +static int tunnel_channel_config_socket(RedChannel *channel, RedsStreamContext *peer)
> {
> int flags;
> int delay_val;
>
> - if ((flags = fcntl(channel->peer->socket, F_GETFL)) == -1) {
> + if ((flags = fcntl(peer->socket, F_GETFL)) == -1) {
> red_printf("accept failed, %s", strerror(errno)); // can't we just use red_error?
> return FALSE;
> }
>
> - if (fcntl(channel->peer->socket, F_SETFL, flags | O_NONBLOCK) == -1) {
> + if (fcntl(peer->socket, F_SETFL, flags | O_NONBLOCK) == -1) {
> red_printf("accept failed, %s", strerror(errno));
> return FALSE;
> }
>
> delay_val = 1;
>
> - if (setsockopt(channel->peer->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val,
> + if (setsockopt(peer->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val,
> sizeof(delay_val)) == -1) {
> red_printf("setsockopt failed, %s", strerror(errno));
> }
> diff --git a/server/red_worker.c b/server/red_worker.c
> index b79c1b6..d7fab60 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -9022,11 +9022,10 @@ static int display_channel_handle_message(RedChannel *channel, uint32_t size, ui
> }
> }
>
> -int common_channel_config_socket(RedChannel *channel)
> +int common_channel_config_socket(RedChannel *channel, RedsStreamContext *peer)
> {
> int flags;
> int delay_val;
> - RedsStreamContext *peer = channel->peer;
>
> if ((flags = fcntl(peer->socket, F_GETFL)) == -1) {
> red_printf("accept failed, %s", strerror(errno));
> diff --git a/server/smartcard.c b/server/smartcard.c
> index 66f57a4..e66ed1c 100644
> --- a/server/smartcard.c
> +++ b/server/smartcard.c
> @@ -239,7 +239,7 @@ static void smartcard_char_device_detach(
> smartcard_channel_write_to_reader(smartcard_channel, &vheader);
> }
>
> -static int smartcard_channel_config_socket(RedChannel *channel)
> +static int smartcard_channel_config_socket(RedChannel *channel, RedsStreamContext *peer)
> {
> return TRUE;
> }
> --
> 1.7.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