But samples from MSDN (Authentication in WinHTTP) checks for this
value after WinHttpReceiveResponse.
At a first glance the sample may look like that. But if you look closely, the sample actually checks for ERROR_WINHTTP_RESEND_REQUEST
if either WinHttpSendRequest()
or WinHttpReceiveResponse()
fails:
// Send a request.
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0,
WINHTTP_NO_REQUEST_DATA,
0,
0,
0 );
// End the request.
if( bResults )
bResults = WinHttpReceiveResponse( hRequest, NULL );
// Resend the request in case of
// ERROR_WINHTTP_RESEND_REQUEST error.
if( !bResults && GetLastError( ) == ERROR_WINHTTP_RESEND_REQUEST)
continue;
If WinHttpSendRequest()
returns FALSE
, the call to WinHttpReceiveResponse()
will be skipped and GetLastError()
will be checked for ERROR_WINHTTP_RESEND_REQUEST
. This code is inside a while
loop, so the continue
statement will cause the remaining portion of the loop to be skipped so WinHttpSendRequest()
will be called again.
Conclusion: The sample is in line with the reference documentation.