From: Hans Leidekker <hans@codeweavers.com> Wine-Bug: http://bugs.winehq.org/show_bug.cgi?id=59546 --- dlls/winhttp/request.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c index 7ae05db92a5..3bc1d036796 100644 --- a/dlls/winhttp/request.c +++ b/dlls/winhttp/request.c @@ -173,14 +173,6 @@ struct chunked_stream } state; }; -static DWORD chunked_query_data( struct data_stream *stream, struct request *request ) -{ - struct chunked_stream *chunked_stream = (struct chunked_stream *)stream; - - if (chunked_stream->state != CHUNKED_STREAM_STATE_READING_CHUNK ) return 0; - return min( chunked_stream->chunk_size, chunked_stream->buf_size - chunked_stream->buf_pos ); -} - static BOOL chunked_end_of_data( struct data_stream *stream, struct request *request ) { struct chunked_stream *chunked_stream = (struct chunked_stream *)stream; @@ -331,6 +323,18 @@ static DWORD chunked_read_data( struct data_stream *stream, struct request *requ return ERROR_SUCCESS; } +static DWORD chunked_query_data( struct data_stream *stream, struct request *request ) +{ + struct chunked_stream *chunked_stream = (struct chunked_stream *)stream; + + while (chunked_stream->state < CHUNKED_STREAM_STATE_READING_CHUNK) + { + DWORD size; + if (chunked_read_data( stream, request, NULL, 0, &size )) return 0; + } + return chunked_stream->chunk_size; +} + static DWORD chunked_drain_data( struct data_stream *stream, struct request *request ) { struct chunked_stream *chunked_stream = (struct chunked_stream *)stream; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10426