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.