From: Hans Leidekker <hans@codeweavers.com> --- dlls/winhttp/request.c | 5 +++-- dlls/winhttp/tests/notification.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c index 31b74ce3e9e..947ef839da6 100644 --- a/dlls/winhttp/request.c +++ b/dlls/winhttp/request.c @@ -3343,11 +3343,12 @@ BOOL WINAPI WinHttpReceiveResponse( HINTERNET hrequest, LPVOID reserved ) return !ret; } +#define RECURSION_LIMIT 5 static BOOL skip_async_queue( struct request *request, BOOL *wont_block, DWORD to_read ) { to_read = min( to_read, request->content_length - request->content_read ); *wont_block = end_of_data_stream( request ) || request->read.size >= to_read; - return request->hdr.recursion_count <= 3 && *wont_block; + return request->hdr.recursion_count <= RECURSION_LIMIT && *wont_block; } static DWORD query_data_available( struct request *request, DWORD *available, BOOL async ) @@ -3647,7 +3648,7 @@ BOOL WINAPI WinHttpWriteData( HINTERNET hrequest, const void *buffer, DWORD to_w return FALSE; } - if (!(async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) || request->hdr.recursion_count <= 3) + if (!(async = request->connect->hdr.flags & WINHTTP_FLAG_ASYNC) || request->hdr.recursion_count <= RECURSION_LIMIT) { ret = write_data( request, buffer, to_write, written, async ); } diff --git a/dlls/winhttp/tests/notification.c b/dlls/winhttp/tests/notification.c index 83c57ee4469..25b133e8f20 100644 --- a/dlls/winhttp/tests/notification.c +++ b/dlls/winhttp/tests/notification.c @@ -1838,7 +1838,7 @@ struct test_recursion_context BYTE *send_buffer; }; -#define TEST_RECURSION_LIMIT 3 +#define TEST_RECURSION_LIMIT 5 static void CALLBACK test_recursion_callback( HINTERNET handle, DWORD_PTR context_ptr, DWORD status, void *buffer, DWORD buflen ) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10607