[Spice-devel] [PATCH spice-server 1/2] server/red_channel: remove red_channel_client_item_being_sent

Alon Levy alevy at redhat.com
Thu May 24 02:22:36 PDT 2012


On Thu, May 24, 2012 at 11:32:04AM +0300, Yonit Halperin wrote:
> The above routine was risky, since red_channel_client_init_send_data
> can also be called with item==NULL. Thus, not all pipe items can be tracked.
> The one call that was made for this routine was not necessary.

Looks good,

ACK both.

> ---
>  server/red_channel.c |   19 -------------------
>  server/red_channel.h |    9 ---------
>  server/red_worker.c  |    4 +---
>  3 files changed, 1 insertions(+), 31 deletions(-)
> 
> diff --git a/server/red_channel.c b/server/red_channel.c
> index a7ef934..83a9f37 100644
> --- a/server/red_channel.c
> +++ b/server/red_channel.c
> @@ -1374,25 +1374,6 @@ int red_channel_get_first_socket(RedChannel *channel)
>                               RedChannelClient, channel_link)->stream->socket;
>  }
>  
> -int red_channel_client_item_being_sent(RedChannelClient *rcc, PipeItem *item)
> -{
> -    return rcc->send_data.item == item;
> -}
> -
> -int red_channel_item_being_sent(RedChannel *channel, PipeItem *item)
> -{
> -    RingItem *link;
> -    RedChannelClient *rcc;
> -
> -    RING_FOREACH(link, &channel->clients) {
> -        rcc = SPICE_CONTAINEROF(link, RedChannelClient, channel_link);
> -        if (rcc->send_data.item == item) {
> -            return TRUE;
> -        }
> -    }
> -    return FALSE;
> -}
> -
>  int red_channel_no_item_being_sent(RedChannel *channel)
>  {
>      RingItem *link;
> diff --git a/server/red_channel.h b/server/red_channel.h
> index 5418210..765b74e 100644
> --- a/server/red_channel.h
> +++ b/server/red_channel.h
> @@ -432,15 +432,6 @@ int red_channel_client_blocked(RedChannelClient *rcc);
>  /* helper for channels that have complex logic that can possibly ready a send */
>  int red_channel_client_send_message_pending(RedChannelClient *rcc);
>  
> -/* returns TRUE if item is being sent by one of the channel clients. This will
> - * be true if someone called init_send_data but send has not completed (or perhaps
> - * hasn't even begun, i.e. no one called begin_send_).
> - * However, note that red_channel_client_init_send_data can also be called with
> - * item==NULL, thus not all pipe items can be tracked.
> - */
> -int red_channel_item_being_sent(RedChannel *channel, PipeItem *item);
> -int red_channel_client_item_being_sent(RedChannelClient *rcc, PipeItem *item);
> -
>  int red_channel_no_item_being_sent(RedChannel *channel);
>  int red_channel_client_no_item_being_sent(RedChannelClient *rcc);
>  
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 9e5624b..2709486 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -10364,9 +10364,7 @@ static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item)
>          spice_printerr("timeout");
>          red_channel_client_disconnect(rcc);
>      } else {
> -        if (red_channel_client_item_being_sent(rcc, item)) {
> -            red_wait_outgoing_item(rcc);
> -        }
> +        red_wait_outgoing_item(rcc);
>      }
>      channel->channel_cbs.release_item(rcc, item, FALSE);
>  }
> -- 
> 1.7.7.6
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list