winhttp: Implement WinHttpQueryHeaders.
This commit is contained in:
parent
8f1d818bf3
commit
f14b6afb9c
@ -164,18 +164,6 @@ BOOL WINAPI WinHttpWriteData (HINTERNET hRequest, LPCVOID lpBuffer,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* WinHttpQueryHeaders (winhttp.@)
|
|
||||||
*/
|
|
||||||
BOOL WINAPI WinHttpQueryHeaders (HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName,
|
|
||||||
LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
|
|
||||||
{
|
|
||||||
FIXME("(%d): stub\n", dwInfoLevel);
|
|
||||||
|
|
||||||
SetLastError(ERROR_NOT_SUPPORTED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL WINAPI InternetCrackUrlW( LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW );
|
BOOL WINAPI InternetCrackUrlW( LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW );
|
||||||
BOOL WINAPI InternetCreateUrlW( LPURL_COMPONENTS, DWORD, LPWSTR, LPDWORD );
|
BOOL WINAPI InternetCreateUrlW( LPURL_COMPONENTS, DWORD, LPWSTR, LPDWORD );
|
||||||
|
|
||||||
|
@ -318,3 +318,198 @@ BOOL WINAPI WinHttpAddRequestHeaders( HINTERNET hrequest, LPCWSTR headers, DWORD
|
|||||||
release_object( &request->hdr );
|
release_object( &request->hdr );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static WCHAR *build_request_string( request_t *request, LPCWSTR verb, LPCWSTR path, LPCWSTR version )
|
||||||
|
{
|
||||||
|
static const WCHAR space[] = {' ',0};
|
||||||
|
static const WCHAR crlf[] = {'\r','\n',0};
|
||||||
|
static const WCHAR colon[] = {':',' ',0};
|
||||||
|
static const WCHAR twocrlf[] = {'\r','\n','\r','\n',0};
|
||||||
|
|
||||||
|
WCHAR *ret;
|
||||||
|
const WCHAR **headers, **p;
|
||||||
|
unsigned int len, i = 0, j;
|
||||||
|
|
||||||
|
/* allocate space for an array of all the string pointers to be added */
|
||||||
|
len = request->num_headers * 4 + 7;
|
||||||
|
if (!(headers = heap_alloc( len * sizeof(LPCWSTR) ))) return NULL;
|
||||||
|
|
||||||
|
headers[i++] = verb;
|
||||||
|
headers[i++] = space;
|
||||||
|
headers[i++] = path;
|
||||||
|
headers[i++] = space;
|
||||||
|
headers[i++] = version;
|
||||||
|
|
||||||
|
for (j = 0; j < request->num_headers; j++)
|
||||||
|
{
|
||||||
|
if (request->headers[j].is_request)
|
||||||
|
{
|
||||||
|
headers[i++] = crlf;
|
||||||
|
headers[i++] = request->headers[j].field;
|
||||||
|
headers[i++] = colon;
|
||||||
|
headers[i++] = request->headers[j].value;
|
||||||
|
|
||||||
|
TRACE("adding header %s (%s)\n", debugstr_w(request->headers[j].field),
|
||||||
|
debugstr_w(request->headers[j].value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
headers[i++] = twocrlf;
|
||||||
|
headers[i] = NULL;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
for (p = headers; *p; p++) len += strlenW( *p );
|
||||||
|
len++;
|
||||||
|
|
||||||
|
if (!(ret = heap_alloc( len * sizeof(WCHAR) )))
|
||||||
|
{
|
||||||
|
heap_free( headers );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
*ret = 0;
|
||||||
|
for (p = headers; *p; p++) strcatW( ret, *p );
|
||||||
|
|
||||||
|
heap_free( headers );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define QUERY_MODIFIER_MASK (WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_FLAG_SYSTEMTIME | WINHTTP_QUERY_FLAG_NUMBER)
|
||||||
|
|
||||||
|
static BOOL query_headers( request_t *request, DWORD level, LPCWSTR name, LPVOID buffer, LPDWORD buflen, LPDWORD index )
|
||||||
|
{
|
||||||
|
header_t *header = NULL;
|
||||||
|
BOOL request_only, ret = FALSE;
|
||||||
|
int requested_index, header_index = -1;
|
||||||
|
DWORD attribute;
|
||||||
|
|
||||||
|
request_only = level & WINHTTP_QUERY_FLAG_REQUEST_HEADERS;
|
||||||
|
requested_index = index ? *index : 0;
|
||||||
|
|
||||||
|
attribute = level & ~QUERY_MODIFIER_MASK;
|
||||||
|
switch (attribute)
|
||||||
|
{
|
||||||
|
case WINHTTP_QUERY_CUSTOM:
|
||||||
|
{
|
||||||
|
header_index = get_header_index( request, name, requested_index, request_only );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WINHTTP_QUERY_RAW_HEADERS_CRLF:
|
||||||
|
{
|
||||||
|
WCHAR *headers;
|
||||||
|
DWORD len;
|
||||||
|
|
||||||
|
if (request_only)
|
||||||
|
headers = build_request_string( request, request->verb, request->path, request->version );
|
||||||
|
else
|
||||||
|
headers = request->raw_headers;
|
||||||
|
|
||||||
|
len = strlenW( headers ) * sizeof(WCHAR);
|
||||||
|
if (len + sizeof(WCHAR) > *buflen)
|
||||||
|
{
|
||||||
|
len += sizeof(WCHAR);
|
||||||
|
set_last_error( ERROR_INSUFFICIENT_BUFFER );
|
||||||
|
}
|
||||||
|
else if (buffer)
|
||||||
|
{
|
||||||
|
memcpy( buffer, headers, len + sizeof(WCHAR) );
|
||||||
|
TRACE("returning data: %s\n", debugstr_wn(buffer, len / sizeof(WCHAR)));
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
*buflen = len;
|
||||||
|
if (request_only) heap_free( headers );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
FIXME("attribute %u not implemented\n", attribute);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (header_index >= 0)
|
||||||
|
{
|
||||||
|
header = &request->headers[header_index];
|
||||||
|
}
|
||||||
|
if (!header || (request_only && !header->is_request))
|
||||||
|
{
|
||||||
|
set_last_error( ERROR_WINHTTP_HEADER_NOT_FOUND );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (index) *index += 1;
|
||||||
|
if (level & WINHTTP_QUERY_FLAG_NUMBER)
|
||||||
|
{
|
||||||
|
int *number = buffer;
|
||||||
|
if (sizeof(int) > *buflen)
|
||||||
|
{
|
||||||
|
set_last_error( ERROR_INSUFFICIENT_BUFFER );
|
||||||
|
}
|
||||||
|
else if (number)
|
||||||
|
{
|
||||||
|
*number = atoiW( header->value );
|
||||||
|
TRACE("returning number: %d\n", *number);
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
*buflen = sizeof(int);
|
||||||
|
}
|
||||||
|
else if (level & WINHTTP_QUERY_FLAG_SYSTEMTIME)
|
||||||
|
{
|
||||||
|
SYSTEMTIME *st = buffer;
|
||||||
|
if (sizeof(SYSTEMTIME) > *buflen)
|
||||||
|
{
|
||||||
|
set_last_error( ERROR_INSUFFICIENT_BUFFER );
|
||||||
|
}
|
||||||
|
else if (st && (ret = WinHttpTimeToSystemTime( header->value, st )))
|
||||||
|
{
|
||||||
|
TRACE("returning time: %04d/%02d/%02d - %d - %02d:%02d:%02d.%02d\n",
|
||||||
|
st->wYear, st->wMonth, st->wDay, st->wDayOfWeek,
|
||||||
|
st->wHour, st->wMinute, st->wSecond, st->wMilliseconds);
|
||||||
|
}
|
||||||
|
*buflen = sizeof(SYSTEMTIME);
|
||||||
|
}
|
||||||
|
else if (header->value)
|
||||||
|
{
|
||||||
|
WCHAR *string = buffer;
|
||||||
|
DWORD len = (strlenW( header->value ) + 1) * sizeof(WCHAR);
|
||||||
|
if (len > *buflen)
|
||||||
|
{
|
||||||
|
set_last_error( ERROR_INSUFFICIENT_BUFFER );
|
||||||
|
*buflen = len;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else if (string)
|
||||||
|
{
|
||||||
|
strcpyW( string, header->value );
|
||||||
|
TRACE("returning string: %s\n", debugstr_w(string));
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
*buflen = len - sizeof(WCHAR);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* WinHttpQueryHeaders (winhttp.@)
|
||||||
|
*/
|
||||||
|
BOOL WINAPI WinHttpQueryHeaders( HINTERNET hrequest, DWORD level, LPCWSTR name, LPVOID buffer, LPDWORD buflen, LPDWORD index )
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
request_t *request;
|
||||||
|
|
||||||
|
TRACE("%p, 0x%08x, %s, %p, %p, %p\n", hrequest, level, debugstr_w(name), buffer, buflen, index);
|
||||||
|
|
||||||
|
if (!(request = (request_t *)grab_object( hrequest )))
|
||||||
|
{
|
||||||
|
set_last_error( ERROR_INVALID_HANDLE );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (request->hdr.type != WINHTTP_HANDLE_TYPE_REQUEST)
|
||||||
|
{
|
||||||
|
release_object( &request->hdr );
|
||||||
|
set_last_error( ERROR_WINHTTP_INCORRECT_HANDLE_TYPE );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = query_headers( request, level, name, buffer, buflen, index );
|
||||||
|
|
||||||
|
release_object( &request->hdr );
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -249,15 +249,11 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed: header index not incremented\n");
|
ok(index == 1, "WinHttpQueryHeaders failed: header index not incremented\n");
|
||||||
ok(memcmp(buffer, test_indices[0], sizeof(test_indices[0])) == 0,
|
ok(memcmp(buffer, test_indices[0], sizeof(test_indices[0])) == 0, "WinHttpQueryHeaders failed: incorrect string returned\n");
|
||||||
"WinHttpQueryHeaders failed: incorrect string returned\n");
|
ok(len == 5*sizeof(WCHAR), "WinHttpQueryHeaders failed: invalid length returned, expected 5, got %d\n", len);
|
||||||
ok(len == 5*sizeof(WCHAR),
|
|
||||||
"WinHttpQueryHeaders failed: invalid length returned, expected 5, got %d\n", len);
|
|
||||||
}
|
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded, second index should not exist.\n");
|
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded, second index should not exist.\n");
|
||||||
@ -271,7 +267,7 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded with a buffer thats too small.\n");
|
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded with a buffer thats too small.\n");
|
||||||
ok(memcmp(buffer, check_buffer, sizeof(buffer)) == 0,
|
ok(memcmp(buffer, check_buffer, sizeof(buffer)) == 0,
|
||||||
"WinHttpQueryHeaders failed, modified the buffer when it should not have.\n");
|
"WinHttpQueryHeaders failed, modified the buffer when it should not have.\n");
|
||||||
todo_wine ok(len == 6*sizeof(WCHAR), "WinHttpQueryHeaders returned invalid length, expected 12, got %d\n", len);
|
ok(len == 6*sizeof(WCHAR), "WinHttpQueryHeaders returned invalid length, expected 12, got %d\n", len);
|
||||||
|
|
||||||
/* Try with a NULL buffer */
|
/* Try with a NULL buffer */
|
||||||
index = 0;
|
index = 0;
|
||||||
@ -281,7 +277,7 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
test_header_name, NULL, &len, &index);
|
test_header_name, NULL, &len, &index);
|
||||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
||||||
todo_wine ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Expected ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError());
|
todo_wine ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Expected ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError());
|
||||||
ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
todo_wine ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
||||||
ok(index == 0, "WinHttpQueryHeaders incorrectly incremented header index.\n");
|
ok(index == 0, "WinHttpQueryHeaders incorrectly incremented header index.\n");
|
||||||
|
|
||||||
/* Try with a NULL buffer and a length thats too small */
|
/* Try with a NULL buffer and a length thats too small */
|
||||||
@ -291,12 +287,9 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, NULL, &len, &index);
|
test_header_name, NULL, &len, &index);
|
||||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
|
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
|
||||||
"WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICENT_BUFFER, go %u\n", GetLastError());
|
"WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICENT_BUFFER, go %u\n", GetLastError());
|
||||||
ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
todo_wine ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
||||||
}
|
|
||||||
ok(index == 0, "WinHttpQueryHeaders incorrectly incremented header index.\n");
|
ok(index == 0, "WinHttpQueryHeaders incorrectly incremented header index.\n");
|
||||||
|
|
||||||
index = 0;
|
index = 0;
|
||||||
@ -305,13 +298,9 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, NULL, &len, &index);
|
test_header_name, NULL, &len, &index);
|
||||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded.\n");
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
|
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
|
||||||
"WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICIENT_BUFFER, got %u\n",
|
"WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICIENT_BUFFER, got %u\n", GetLastError());
|
||||||
GetLastError());
|
todo_wine ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
||||||
ok(len > 40, "WinHttpQueryHeaders returned invalid length: expected greater than 40, got %d\n", len);
|
|
||||||
}
|
|
||||||
ok(index == 0, "WinHttpQueryHeaders failed: index was incremented.\n");
|
ok(index == 0, "WinHttpQueryHeaders failed: index was incremented.\n");
|
||||||
|
|
||||||
/* valid query */
|
/* valid query */
|
||||||
@ -321,13 +310,12 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
memset(buffer, 0xff, sizeof(buffer));
|
memset(buffer, 0xff, sizeof(buffer));
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_RAW_HEADERS_CRLF | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: got %d\n", ret);
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: got %d\n", ret);
|
||||||
ok(len + sizeof(WCHAR) <= oldlen, "WinHttpQueryHeaders resulting length longer than advertized.\n");
|
ok(len + sizeof(WCHAR) <= oldlen, "WinHttpQueryHeaders resulting length longer than advertized.\n");
|
||||||
ok((len < sizeof(buffer) - sizeof(WCHAR)) && buffer[len / sizeof(WCHAR)] == 0,
|
ok((len < sizeof(buffer) - sizeof(WCHAR)) && buffer[len / sizeof(WCHAR)] == 0, "WinHttpQueryHeaders did not append NULL terminator\n");
|
||||||
"WinHttpQueryHeaders did not append NULL terminator\n");
|
|
||||||
ok(len == lstrlenW(buffer) * sizeof(WCHAR), "WinHttpQueryHeaders returned incorrect length.\n");
|
ok(len == lstrlenW(buffer) * sizeof(WCHAR), "WinHttpQueryHeaders returned incorrect length.\n");
|
||||||
|
todo_wine
|
||||||
|
{
|
||||||
ok(memcmp(buffer, test_header_begin, sizeof(test_header_begin)) == 0,
|
ok(memcmp(buffer, test_header_begin, sizeof(test_header_begin)) == 0,
|
||||||
"WinHttpQueryHeaders returned invalid beginning of header string.\n");
|
"WinHttpQueryHeaders returned invalid beginning of header string.\n");
|
||||||
ok(memcmp(buffer + lstrlenW(buffer) - 4, test_header_end, sizeof(test_header_end)) == 0,
|
ok(memcmp(buffer + lstrlenW(buffer) - 4, test_header_end, sizeof(test_header_end)) == 0,
|
||||||
@ -343,23 +331,16 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[0], sizeof(test_indices[0])) == 0,
|
ok(memcmp(buffer, test_indices[0], sizeof(test_indices[0])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0,
|
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = WinHttpAddRequestHeaders(request, test_headers[2], -1L, WINHTTP_ADDREQ_FLAG_REPLACE);
|
ret = WinHttpAddRequestHeaders(request, test_headers[2], -1L, WINHTTP_ADDREQ_FLAG_REPLACE);
|
||||||
ok(ret == TRUE, "WinHttpAddRequestHeaders failed to add duplicate header.\n");
|
ok(ret == TRUE, "WinHttpAddRequestHeaders failed to add duplicate header.\n");
|
||||||
@ -368,23 +349,16 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0,
|
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add if new flag */
|
/* add if new flag */
|
||||||
ret = WinHttpAddRequestHeaders(request, test_headers[3], -1L, WINHTTP_ADDREQ_FLAG_ADD_IF_NEW);
|
ret = WinHttpAddRequestHeaders(request, test_headers[3], -1L, WINHTTP_ADDREQ_FLAG_ADD_IF_NEW);
|
||||||
@ -394,23 +368,17 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0,
|
ok(memcmp(buffer, test_indices[1], sizeof(test_indices[1])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
@ -424,23 +392,17 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_flag_coalesce, sizeof(test_flag_coalesce)) == 0,
|
ok(memcmp(buffer, test_flag_coalesce, sizeof(test_flag_coalesce)) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
@ -454,23 +416,18 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_flag_coalesce_comma, sizeof(test_flag_coalesce_comma)) == 0,
|
ok(memcmp(buffer, test_flag_coalesce_comma, sizeof(test_flag_coalesce_comma)) == 0,
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
"WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
@ -485,23 +442,18 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_flag_coalesce_semicolon, sizeof(test_flag_coalesce_semicolon)) == 0,
|
ok(memcmp(buffer, test_flag_coalesce_semicolon, sizeof(test_flag_coalesce_semicolon)) == 0,
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
"WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
@ -515,23 +467,17 @@ static void test_WinHttpAddHeaders(void)
|
|||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 1, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[2], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
ok(ret == TRUE, "WinHttpQueryHeaders failed: %u\n", GetLastError());
|
||||||
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
ok(index == 2, "WinHttpQueryHeaders failed to increment index.\n");
|
||||||
ok(memcmp(buffer, test_indices[3], sizeof(test_indices[2])) == 0,
|
ok(memcmp(buffer, test_indices[3], sizeof(test_indices[2])) == 0, "WinHttpQueryHeaders returned incorrect string.\n");
|
||||||
"WinHttpQueryHeaders returned incorrect string.\n");
|
|
||||||
}
|
|
||||||
len = sizeof(buffer);
|
len = sizeof(buffer);
|
||||||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||||
test_header_name, buffer, &len, &index);
|
test_header_name, buffer, &len, &index);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user