Re: [PATCH spice-server] red-stream: Remove AsyncRead::stream

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> On Tue, Jan 09, 2018 at 07:48:34PM +0000, Frediano Ziglio wrote:
> > AsyncRead is always included in RedStream and there are only
> > a possible operation pending on a RedStream.
> 
> Yes, it's a bit odd that AsyncRead is attached to RedStream, which means
> only one async operation at a time is possible. One could argue it's
> better to keep things asthey are now in case we want to make more
> extensive use of async operations in the future, but I suspect we'd
> have to do more work on RedStream anyway to allow that.
> 

On the other hand you could have only one active attached to a RedStream,
maximum you can have a chain but looking on how is defined would be better
to use a readv instead.

> > @@ -550,13 +549,16 @@ void red_stream_async_read(RedStream *stream,
> >  {
> >      AsyncRead *async = &stream->priv->async_read;
> >  
> > -    g_return_if_fail(!async->stream);
> > -    async->stream = stream;
> > +    g_return_if_fail(async->now == NULL && async->end == NULL);
> 
> > +    if (size == 0) {
> > +        read_done_cb(opaque);
> > +        return;
> > +    }
> 
> This bit seems unrelated?
> 

Yes, is handling a particular case (reading 0 bytes) directly instead of
adding a pending operation. It can be useful if you have a sequence length+data
where length can be 0. Currently cannot happen (size is always > 0), in
red_sasl_handle_auth_steplen where you have a sequence like that you handle
the size == 0 case explicitly with a "if (len == 0) {".

But you are right, is not part of the rationale although IMHO should be a
handled case. I'll remove from the patch.

> Apart from this,
> Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx>
> 
> Christophe
> 

Frediano
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]