wininet: Don't assume that end of chunk means end of stream.

Hans Leidekker hans at codeweavers.com
Wed Sep 11 10:32:23 CDT 2013


On Wed, 2013-09-11 at 16:38 +0200, Jacek Caban wrote:
> Hi Hans,
> 
> On 09/11/13 13:50, Hans Leidekker wrote:
> >  static DWORD chunked_get_avail_data(data_stream_t *stream, http_request_t *req)
> >  {
> > -    /* Allow reading only from read buffer */
> > +    chunked_stream_t *chunked_stream = (chunked_stream_t*)stream;
> > +    DWORD res;
> > +
> > +    if(!chunked_stream->chunk_size || chunked_stream->chunk_size == ~0u) {
> > +        res = start_next_chunk(chunked_stream, req);
> > +        if(res != ERROR_SUCCESS)
> > +            return 0;
> > +    }
> 
> start_next_chunk may block and we don't want chunked_get_avail_data to
> block.

We can't avoid that. If this is the first chunk or if the current chunk has
been consumed we need to read a couple of bytes to find out how much we can
expect.

Network traces tell me that native also performs a read on the first call to
InternetQueryDataAvailable.





More information about the wine-devel mailing list