Commit 7bca41a7 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

wininet: Handle HTTP_QUERY_CUSTOM.

In HttpQueryInfo if dwInfoLevel includes HTTP_QUERY_CUSTOM then lpBuffer is In/Out because the header we are querying is there. Additionally standard headers can be queried in this manner as well (such as Set-Cookie).
parent c7a59d11
...@@ -102,6 +102,7 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD ...@@ -102,6 +102,7 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD
static BOOL HTTP_HandleRedirect(LPWININETHTTPREQW lpwhr, LPCWSTR lpszUrl, static BOOL HTTP_HandleRedirect(LPWININETHTTPREQW lpwhr, LPCWSTR lpszUrl,
LPCWSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD LPCWSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD
dwOptionalLength, DWORD dwContentLength); dwOptionalLength, DWORD dwContentLength);
static INT HTTP_GetStdHeaderIndex(LPCWSTR lpszField);
/*********************************************************************** /***********************************************************************
* HTTP_Tokenize (internal) * HTTP_Tokenize (internal)
...@@ -1161,9 +1162,14 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLev ...@@ -1161,9 +1162,14 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLev
INT index = HTTP_GetCustomHeaderIndex(lpwhr, (LPWSTR)lpBuffer); INT index = HTTP_GetCustomHeaderIndex(lpwhr, (LPWSTR)lpBuffer);
if (index < 0) if (index < 0)
return bSuccess; index = HTTP_GetStdHeaderIndex(lpBuffer);
else
lphttpHdr = &lpwhr->pCustHeaders[index];
lphttpHdr = &lpwhr->pCustHeaders[index]; if (index < 0)
return bSuccess;
else
lphttpHdr = &lpwhr->StdHeaders[index];
} }
else else
{ {
...@@ -1285,7 +1291,7 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLev ...@@ -1285,7 +1291,7 @@ static BOOL WINAPI HTTP_HttpQueryInfoW( LPWININETHTTPREQW lpwhr, DWORD dwInfoLev
(*lpdwIndex)++; (*lpdwIndex)++;
} }
} }
else else if (lphttpHdr->lpszValue)
{ {
DWORD len = (strlenW(lphttpHdr->lpszValue) + 1) * sizeof(WCHAR); DWORD len = (strlenW(lphttpHdr->lpszValue) + 1) * sizeof(WCHAR);
...@@ -1475,6 +1481,9 @@ BOOL WINAPI HttpQueryInfoA(HINTERNET hHttpRequest, DWORD dwInfoLevel, ...@@ -1475,6 +1481,9 @@ BOOL WINAPI HttpQueryInfoA(HINTERNET hHttpRequest, DWORD dwInfoLevel,
len = (*lpdwBufferLength)*sizeof(WCHAR); len = (*lpdwBufferLength)*sizeof(WCHAR);
bufferW = HeapAlloc( GetProcessHeap(), 0, len ); bufferW = HeapAlloc( GetProcessHeap(), 0, len );
/* buffer is in/out because of HTTP_QUERY_CUSTOM */
if ((dwInfoLevel & HTTP_QUERY_HEADER_MASK) == HTTP_QUERY_CUSTOM)
MultiByteToWideChar(CP_ACP,0,lpBuffer,-1,bufferW,len);
result = HttpQueryInfoW( hHttpRequest, dwInfoLevel, bufferW, result = HttpQueryInfoW( hHttpRequest, dwInfoLevel, bufferW,
&len, lpdwIndex ); &len, lpdwIndex );
if( result ) if( result )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment