On Wed, Feb 02, 2011 at 07:53:22PM +0100, Marc-André Lureau wrote: > Isn't this undoing what was done in patch 19?? > It is. Good catch. But the problem the comment in patch 19 reports does need to be addressed, that is setting the blocked flag if ack window breached. I'll make a new patch instead of 19 and 22.
> On Wed, Jan 19, 2011 at 7:08 PM, Alon Levy <[email protected]> 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 > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/spice-devel > > > > > > -- > Marc-André Lureau _______________________________________________ Spice-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/spice-devel
