Hi Sebastian, On 04/25/16 21:41, Sebastian Lackner wrote:
+ memset( &ib, 0, sizeof(ib) ); + memset( buffer, 0, sizeof(buffer) ); + ib.dwStructSize = sizeof(ib); + for (count = 0; count < sizeof(buffer); count += ib.dwBufferLength) + { + ib.lpvBuffer = buffer + count; + ib.dwBufferLength = sizeof(buffer) - count; + + SET_OPTIONAL( INTERNET_STATUS_RECEIVING_RESPONSE ); + SET_OPTIONAL( INTERNET_STATUS_RESPONSE_RECEIVED ); + + ret = InternetReadFileExA( req, &ib, 0, 0xdeadbeef ); + if (!ret) + { + ok( GetLastError() == ERROR_IO_PENDING, "expected ERROR_IO_PENDING, got %u\n", GetLastError() ); + SET_EXPECT( INTERNET_STATUS_REQUEST_COMPLETE ); + SetEvent( conn_wait_event ); + WaitForSingleObject( hCompleteEvent, INFINITE ); + ok( req_error == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", req_error ); + CHECK_NOTIFIED( INTERNET_STATUS_REQUEST_COMPLETE ); + }
It's a nice way to force async read, but when you add tests with predictable reads it would be nice to take more advantage of that. What do you think about: - call InternetReadFileEx and check that it's done sync - call InternetReadFileEx and check that it's done async - set conn_wait_event, wait completion and make sure we read all remaining data - call InternetReadFileEx and make sure it synchronously hits the end of data Thanks, Jacek