Hi Hans,
On 19.07.2016 11:27, Hans Leidekker wrote:
Signed-off-by: Hans Leidekker hans@codeweavers.com
dlls/wininet/http.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c index 2c62d97..c4cf66b 100644 --- a/dlls/wininet/http.c +++ b/dlls/wininet/http.c @@ -2921,6 +2921,7 @@ static DWORD set_content_length(http_request_t *request) !strcmpiW(encoding, szChunked)) { chunked_stream_t *chunked_stream;
DWORD res; chunked_stream = heap_alloc(sizeof(*chunked_stream)); if(!chunked_stream)
@@ -2935,6 +2936,12 @@ static DWORD set_content_length(http_request_t *request) memcpy(chunked_stream->buf, request->read_buf+request->read_pos, request->read_size); chunked_stream->buf_size = request->read_size; request->read_size = request->read_pos = 0;
res = start_next_chunk(chunked_stream, request);
if (res != ERROR_SUCCESS) {
heap_free(chunked_stream);
return res;
}
It seems to me that you're fixing a problem is a wrong place. start_next_chunk should be called by HTTP_ReceiveRequestData via refill_read_buffer anyway. I'd suggest to investigate why it doesn't work in your case.
Also, see the attached test. We shouldn't need any chunk to complete requests. It's an existing problem in current Wine, which may be unrelated to your problem, but having such blocking calls here is not a step in the right direction.
Thanks, Jacek