[Spice-devel] [PATCH 22/24] server/red_channel: don't set blocked when ack window full
Marc-André Lureau
marcandre.lureau at gmail.com
Wed Feb 2 10:53:22 PST 2011
Isn't this undoing what was done in patch 19??
On Wed, Jan 19, 2011 at 7:08 PM, Alon Levy <alevy at redhat.com> wrote:
> blocked is set only on output block.
> ---
> server/red_channel.c | 10 ++++++----
> 1 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/server/red_channel.c b/server/red_channel.c
> index 9ad2e5a..0eba73c 100644
> --- a/server/red_channel.c
> +++ b/server/red_channel.c
> @@ -574,18 +574,20 @@ void red_channel_pipe_add_type(RedChannel *channel, int pipe_item_type)
> red_channel_push(channel);
> }
>
> +static inline int red_channel_waiting_for_ack(RedChannel *channel)
> +{
> + return (channel->handle_acks && (channel->ack_data.messages_window > channel->ack_data.client_window * 2));
> +}
> +
> static inline PipeItem *red_channel_pipe_get(RedChannel *channel)
> {
> PipeItem *item;
>
> if (!channel || channel->send_data.blocked ||
> + red_channel_waiting_for_ack(channel) ||
> !(item = (PipeItem *)ring_get_tail(&channel->pipe))) {
> return NULL;
> }
> - if (channel->handle_acks && (channel->ack_data.messages_window > channel->ack_data.client_window * 2)) {
> - channel->send_data.blocked = TRUE;
> - return NULL;
> - }
> --channel->pipe_size;
> ring_remove(&item->link);
> return item;
> --
> 1.7.3.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