winhttp/tests: No reconnect on redirect when using proxy.
This commit is contained in:
parent
ba229eed59
commit
f213cdbc4e
|
@ -46,6 +46,7 @@ struct notification
|
||||||
unsigned int status; /* status received */
|
unsigned int status; /* status received */
|
||||||
int todo;
|
int todo;
|
||||||
int ignore;
|
int ignore;
|
||||||
|
int skipped_for_proxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct info
|
struct info
|
||||||
|
@ -58,6 +59,25 @@ struct info
|
||||||
unsigned int line;
|
unsigned int line;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static BOOL proxy_active(void)
|
||||||
|
{
|
||||||
|
WINHTTP_PROXY_INFO proxy_info;
|
||||||
|
BOOL active = FALSE;
|
||||||
|
|
||||||
|
if (WinHttpGetDefaultProxyConfiguration(&proxy_info))
|
||||||
|
{
|
||||||
|
active = (proxy_info.lpszProxy != NULL);
|
||||||
|
if (active)
|
||||||
|
GlobalFree((HGLOBAL) proxy_info.lpszProxy);
|
||||||
|
if (proxy_info.lpszProxyBypass != NULL)
|
||||||
|
GlobalFree((HGLOBAL) proxy_info.lpszProxyBypass);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
active = FALSE;
|
||||||
|
|
||||||
|
return active;
|
||||||
|
}
|
||||||
|
|
||||||
static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buffer, DWORD buflen )
|
static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buffer, DWORD buflen )
|
||||||
{
|
{
|
||||||
BOOL status_ok, function_ok;
|
BOOL status_ok, function_ok;
|
||||||
|
@ -88,6 +108,12 @@ static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DW
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (status_ok) info->index++;
|
if (status_ok) info->index++;
|
||||||
|
if (proxy_active())
|
||||||
|
{
|
||||||
|
while (info->test[info->index].skipped_for_proxy)
|
||||||
|
info->index++;
|
||||||
|
}
|
||||||
|
|
||||||
if (status & (WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING))
|
if (status & (WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING))
|
||||||
{
|
{
|
||||||
SetEvent( info->wait );
|
SetEvent( info->wait );
|
||||||
|
@ -222,10 +248,10 @@ static const struct notification redirect_test[] =
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
||||||
|
@ -299,10 +325,10 @@ static const struct notification async_test[] =
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 },
|
||||||
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
{ winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 },
|
||||||
|
|
Loading…
Reference in New Issue