31#include <httprequest.h>
36DEFINE_GUID(
GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
85 ok(!
ret,
"should fail to query option\n");
87 ok(
size == 4,
"expected 4, got %lu\n",
size );
93 ok(!
ret,
"should fail to query option\n");
95 ok(
size == 4,
"expected 4, got %lu\n",
size );
103 ok(
size ==
sizeof(
feature),
"WinHttpQueryOption should set the size: %lu\n",
size);
104 ok(
feature == 0,
"got unexpected WINHTTP_OPTION_WORKER_THREAD_COUNT %#lx\n",
feature);
113 ok(
size ==
sizeof(
feature),
"WinHttpQueryOption should set the size: %lu\n",
size);
115 "expected WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, got %#lx\n",
feature);
121 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
128 "expected ERROR_INSUFFICIENT_BUFFER, got %lu\n",
GetLastError());
135 "expected ERROR_INSUFFICIENT_BUFFER, got %lu\n",
GetLastError());
148 "expected WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, got %#lx\n",
feature);
153 ok(!
ret,
"should fail to set disable feature for a session\n");
155 "expected ERROR_WINHTTP_INCORRECT_HANDLE_TYPE, got %lu\n",
GetLastError());
159 ok(connection !=
NULL,
"WinHttpConnect failed to open a connection, error: %lu\n",
GetLastError());
164 ok(!
ret,
"should fail to set disable feature for a connection\n");
166 "expected ERROR_WINHTTP_INCORRECT_HANDLE_TYPE, got %lu\n",
GetLastError());
173 skip(
"Network unreachable, skipping the test\n");
181 ok(
ret,
"query WINHTTP_OPTION_WORKER_THREAD_COUNT failed for a request\n");
183 ok(
size ==
sizeof(
feature),
"WinHttpQueryOption should set the size: %lu\n",
size);
184 ok(
feature == 0,
"got unexpected WINHTTP_OPTION_WORKER_THREAD_COUNT %#lx\n",
feature);
190 ok(
ret,
"query WINHTTP_OPTION_WORKER_THREAD_COUNT failed for a request\n");
192 ok(
size ==
sizeof(
feature),
"WinHttpQueryOption should set the size: %lu\n",
size);
193 ok(
feature == 0,
"got unexpected WINHTTP_OPTION_WORKER_THREAD_COUNT %#lx\n",
feature);
199 ok(!
ret,
"should fail to query disable feature for a request\n");
201 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
224 ok(!
ret,
"should fail to query disable feature for a request\n");
226 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
232 ok(!
ret,
"should fail to query enabled features for a request\n");
233 ok(
feature == 0xdeadbeef,
"expect feature 0xdeadbeef, got %#lx\n",
feature);
239 ok(!
ret,
"should fail to enable WINHTTP_ENABLE_SSL_REVOCATION with invalid parameters\n");
244 ok(!
ret,
"should fail to enable WINHTTP_ENABLE_SSL_REVOCATION with invalid parameters\n");
249 ok(
ret,
"failed to set feature\n");
256 ok(!
ret,
"should fail to enable WINHTTP_ENABLE_SSL_REVOCATION with invalid parameters\n");
271 ok(
ret,
"WinHttpCloseHandle failed on closing connection: %lu\n",
GetLastError());
287 ok(
session !=
NULL,
"WinHttpOpen failed to open session.\n");
294 ok (connection ==
NULL,
"WinHttpConnect succeeded in opening connection to NULL server argument.\n");
301 ok(connection !=
NULL,
"WinHttpConnect failed to open a connection, error: %lu.\n",
err);
310 skip(
"Network unreachable, skipping.\n");
313 ok(
request !=
NULL,
"WinHttpOpenrequest failed to open a request, error: %lu.\n",
err);
321 skip(
"Connection failed, skipping.\n");
324 ok(
ret,
"WinHttpSendRequest failed: %lu\n",
err);
330 ok(
ret,
"WinHttpCloseHandle failed on closing request, got %lu.\n",
err);
335 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing connection, got %d.\n",
ret);
337 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing session, got %d.\n",
ret);
360 skip(
"connection failed, skipping\n");
373 static const WCHAR content_type[] =
L"Content-Type: application/x-www-form-urlencoded";
375 static const char test_post[] =
"mode => Test\0\n";
385 total_len = optional_len =
sizeof(
post_data);
390 ok(
session !=
NULL,
"WinHttpOpen failed to open session.\n");
393 ok(connection !=
NULL,
"WinHttpConnect failed to open a connection, error: %lu\n",
GetLastError());
399 skip(
"Network unreachable, skipping.\n");
427 skip(
"connection failed, skipping\n");
446 ok(bytes_rw == 1,
"WinHttpWriteData failed, wrote %lu bytes instead of 1 byte\n", bytes_rw);
451 ok(bytes_rw == -1,
"Expected bytes_rw to remain unchanged.\n");
473 ok(bytes_rw ==
sizeof(test_post) - 1,
"Read %lu bytes\n", bytes_rw);
474 ok(!
memcmp(
buffer, test_post,
sizeof(test_post) - 1),
"Data read did not match.\n");
478 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing request, got %d.\n",
ret);
480 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing connection, got %d.\n",
ret);
482 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing session, got %d.\n",
ret);
487 static const WCHAR content_type[] =
L"Content-Type: application/x-www-form-urlencoded";
488 DWORD header_len, optional_len, total_len,
err, t1, t2;
494 total_len = optional_len =
sizeof(
post_data);
498 ok(!!
session,
"WinHttpOpen failed to open session.\n");
501 ok(!!connection,
"WinHttpConnect failed to open a connection, error %lu.\n",
GetLastError());
511 ok(!
ret,
"WinHttpSendRequest() succeeded.\n");
513 ok(t2 - t1 < 5000,
"Unexpected connect failure delay %lums.\n", t2 - t1);
530 ok(!
ret,
"WinHttpTimeFromSystemTime succeeded\n");
536 ok(!
ret,
"WinHttpTimeFromSystemTime succeeded\n");
542 ok(
ret,
"WinHttpTimeFromSystemTime failed: %lu\n",
err);
544 ok(!
memcmp(time_string,
L"Mon, 28 Jul 2008 10:05:52 GMT",
sizeof(
L"Mon, 28 Jul 2008 10:05:52 GMT")),
545 "Time string returned did not match expected time string.\n");
552 static const SYSTEMTIME expected_time = {2008, 7, 1, 28, 10, 5, 52, 0};
558 ok(!
ret,
"WinHttpTimeToSystemTime succeeded\n");
564 ok(!
ret,
"WinHttpTimeToSystemTime succeeded\n");
570 ok(
ret,
"WinHttpTimeToSystemTime failed: %lu\n",
err);
573 "Returned SYSTEMTIME structure did not match expected SYSTEMTIME structure.\n");
578 ok(
ret,
"WinHttpTimeToSystemTime failed: %lu\n",
err);
581 "Returned SYSTEMTIME structure did not match expected SYSTEMTIME structure.\n");
586 static const WCHAR test_header_begin[] =
587 {
'P',
'O',
'S',
'T',
' ',
'/',
'p',
'o',
's',
't',
't',
'e',
's',
't',
'.',
'p',
'h',
'p',
' ',
'H',
'T',
'T',
'P',
'/',
'1'};
594 static const WCHAR test_headers[][14] =
614 static const WCHAR test_indices[][6] =
624 ok(
session !=
NULL,
"WinHttpOpen failed to open session.\n");
627 ok(connection !=
NULL,
"WinHttpConnect failed to open a connection, error: %lu\n",
GetLastError());
633 skip(
"Network unreachable, skipping.\n");
642 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded, found 'Warning' header.\n");
646 ok(
ret,
"WinHttpAddRequestHeaders failed to add new header, got %d with error %lu\n",
ret,
err);
654 ok(
index == 1,
"WinHttpQueryHeaders failed: header index not incremented\n");
656 "WinHttpQueryHeaders failed: incorrect string returned\n");
657 ok(
len == 5 *
sizeof(
WCHAR),
"WinHttpQueryHeaders failed: invalid length returned, expected 5, got %lu\n",
len);
661 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded, second index should not exist.\n");
672 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded with a buffer that's too small.\n");
674 "WinHttpQueryHeaders failed, modified the buffer when it should not have.\n");
675 ok(
len == 6 *
sizeof(
WCHAR),
"WinHttpQueryHeaders returned invalid length, expected 12, got %lu\n",
len);
683 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded.\n");
685 ok(
len > 40,
"WinHttpQueryHeaders returned invalid length: expected greater than 40, got %lu\n",
len);
686 ok(
index == 0,
"WinHttpQueryHeaders incorrectly incremented header index.\n");
694 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded.\n");
696 "WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICIENT_BUFFER, got %lu\n",
GetLastError());
697 ok(
len > 40,
"WinHttpQueryHeaders returned invalid length: expected greater than 40, got %lu\n",
len);
698 ok(
index == 0,
"WinHttpQueryHeaders incorrectly incremented header index.\n");
705 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded.\n");
707 "WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICIENT_BUFFER, got %lu\n",
GetLastError());
708 ok(
len > 40,
"WinHttpQueryHeaders returned invalid length: expected greater than 40, got %lu\n",
len);
709 ok(
index == 0,
"WinHttpQueryHeaders failed: index was incremented.\n");
718 ok(
ret ==
TRUE,
"WinHttpQueryHeaders failed: got %d\n",
ret);
719 ok(
len +
sizeof(
WCHAR) <= oldlen,
"WinHttpQueryHeaders resulting length longer than advertized.\n");
721 "WinHttpQueryHeaders did not append NULL terminator\n");
723 ok(!
memcmp(
buffer, test_header_begin,
sizeof(test_header_begin)),
"invalid beginning of header string.\n");
725 "WinHttpQueryHeaders returned invalid end of header string.\n");
726 ok(
index == 0,
"WinHttpQueryHeaders incremented header index.\n");
733 ok(
ret ==
FALSE,
"WinHttpQueryHeaders unexpectedly succeeded.\n");
735 "WinHttpQueryHeaders set incorrect error: expected ERROR_INSUFFICIENT_BUFFER, got %lu\n",
GetLastError());
736 ok(
len > 40,
"WinHttpQueryHeaders returned invalid length: expected greater than 40, got %lu\n",
len);
737 ok(
index == 0,
"WinHttpQueryHeaders failed: index was incremented.\n");
746 ok(
len +
sizeof(
WCHAR) <= oldlen,
"resulting length longer than advertized\n");
748 "no double NULL terminator\n");
749 ok(!
memcmp(
buffer, test_header_begin,
sizeof(test_header_begin)),
"invalid beginning of header string.\n");
750 ok(
index == 0,
"header index was incremented\n");
754 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed to add duplicate header: %d\n",
ret);
761 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
762 ok(
memcmp(
buffer, test_indices[0],
sizeof(test_indices[0])) == 0,
"WinHttpQueryHeaders returned incorrect string.\n");
768 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
769 ok(
memcmp(
buffer, test_indices[1],
sizeof(test_indices[1])) == 0,
"WinHttpQueryHeaders returned incorrect string.\n");
772 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed to add duplicate header.\n");
779 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
782 "WinHttpQueryHeaders returned incorrect string.\n");
788 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
790 "WinHttpQueryHeaders returned incorrect string.\n");
794 ok(
ret ==
FALSE,
"WinHttpAddRequestHeaders incorrectly replaced existing header.\n");
801 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
803 "WinHttpQueryHeaders returned incorrect string.\n");
809 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
811 "WinHttpQueryHeaders returned incorrect string.\n");
816 ok(
ret ==
FALSE,
"WinHttpQueryHeaders succeeded unexpectedly, found third header.\n");
820 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed with flag WINHTTP_ADDREQ_FLAG_COALESCE.\n");
827 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
829 reverse ?
sizeof(
L"test3, test4") :
sizeof(
L"test2, test4")),
830 "WinHttpQueryHeaders returned incorrect string.\n");
836 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
838 "WinHttpQueryHeaders returned incorrect string.\n");
843 ok(
ret ==
FALSE,
"WinHttpQueryHeaders succeeded unexpectedly, found third header.\n");
847 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed with flag WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA.\n");
854 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
857 reverse ?
sizeof(
L"test3, test4, test5") :
sizeof(
L"test2, test4, test5")),
858 "WinHttpQueryHeaders returned incorrect string.\n");
864 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
866 "WinHttpQueryHeaders returned incorrect string.\n");
871 ok(
ret ==
FALSE,
"WinHttpQueryHeaders succeeded unexpectedly, found third header.\n");
876 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed with flag WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON.\n");
883 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
886 reverse ?
sizeof(
L"test3, test4, test5; test6") :
sizeof(
L"test2, test4, test5; test6")),
887 "WinHttpQueryHeaders returned incorrect string.\n");
893 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
895 "WinHttpQueryHeaders returned incorrect string.\n");
900 ok(
ret ==
FALSE,
"WinHttpQueryHeaders succeeded unexpectedly, found third header.\n");
904 ok(
ret ==
TRUE,
"WinHttpAddRequestHeaders failed with flag WINHTTP_ADDREQ_FLAG_ADD | WINHTTP_ADDREQ_FLAG_REPLACE.\n");
911 ok(
index == 1,
"WinHttpQueryHeaders failed to increment index.\n");
913 "WinHttpQueryHeaders returned incorrect string.\n");
919 ok(
index == 2,
"WinHttpQueryHeaders failed to increment index.\n");
921 "WinHttpQueryHeaders returned incorrect string.\n");
926 ok(
ret ==
FALSE,
"WinHttpQueryHeaders succeeded unexpectedly, found third header.\n");
929 ok(!
ret,
"WinHttpAddRequestHeaders failed\n");
932 ok(
ret,
"WinHttpAddRequestHeaders failed\n");
943 ok(!
ret,
"WinHttpAddRequestHeaders failed\n");
946 ok(!
ret,
"WinHttpAddRequestHeaders failed\n");
949 ok(!
ret,
"WinHttpAddRequestHeaders failed\n");
952 ok(
ret,
"WinHttpAddRequestHeaders failed\n");
964 "unexpected result\n");
970 ok(!
ret,
"unexpected success\n");
982 ok(!
memcmp(
buffer,
L"bytes=0-773",
sizeof(
L"bytes=0-773")),
"incorrect string returned\n");
989 ok(!
ret,
"unexpected success\n");
994 ok(!
ret,
"unexpected success\n");
1017 ok(!
ret,
"unexpected success\n");
1032 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing request, got %d.\n",
ret);
1035 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing connection, got %d.\n",
ret);
1037 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing session, got %d.\n",
ret);
1047 trace(
"WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR\n");
1050#define X(x) if (flags & x) trace("%s\n", #x);
1063 static const char data_start[] =
"<!DOCTYPE html PUBLIC";
1090 ok(!
ret,
"unexpected success\n");
1099 ok(!
ret,
"unexpected success\n");
1101 "setting client cert context returned %lu\n",
err);
1107 skip(
"Connection failed, skipping.\n");
1138 ok(!
ret,
"success\n");
1142 ok(!
ret,
"success\n");
1164 skip(
"secure connection failed, skipping remaining secure tests\n");
1174 size =
sizeof(bitness);
1189 trace(
"dwKeySize %lu\n",
info.dwKeySize);
1197 skip(
"connection error, skipping remaining secure tests\n");
1205 ok(available_size > 2014,
"available_size = %lu\n", available_size);
1215 ok(!
ret,
"succeeded unexpectedly\n");
1226 if (read_size <= 32)
1229 ok(read_size >= available_size,
"read_size = %lu, available_size = %lu\n", read_size, available_size);
1262 skip(
"connection failed, skipping\n");
1285 skip(
"connection failed, skipping\n");
1297 ok(!
ret,
"succeeded unexpectedly\n");
1319 'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
1320 'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
1321 'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
1322 'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
1323 'I',
'n',
't',
'e',
'r',
'n',
'e',
't',
' ',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',
'\\',
1324 'C',
'o',
'n',
'n',
'e',
'c',
't',
'i',
'o',
'n',
's',0 };
1326 'W',
'i',
'n',
'H',
't',
't',
'p',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0 };
1368 if (
sizeof(
void *) >
sizeof(
int) ||
wow64)
1379 static WCHAR wideString[] = { 0x226f, 0x575b, 0 };
1380 static WCHAR normalString[] = {
'f',
'o',
'o',0 };
1416 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1420 info.dwAccessType = 0xdeadbeef;
1425 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1433 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1434 info.lpszProxyBypass = normalString;
1438 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1441 info.lpszProxy = wideString;
1445 skip(
"couldn't set default proxy configuration: access denied\n");
1449 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1451 info.lpszProxy = normalString;
1455 skip(
"couldn't set default proxy configuration: access denied\n");
1477 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1482 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1487 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1492 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1513 ok(
value == 0x0123,
"Expected 0x0123, got %lu\n",
value);
1520 ok(
value == 0x4567,
"Expected 0x4567, got %lu\n",
value);
1527 ok(
value == 0x89ab,
"Expected 0x89ab, got %lu\n",
value);
1534 ok(
value == 0xcdef,
"Expected 0xcdef, got %lu\n",
value);
1594 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1606 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1618 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1630 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1641 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1648 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1655 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1662 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1667 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1672 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1677 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1682 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1687 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1692 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1698 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1704 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1710 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1716 "expected ERROR_WINHTTP_INVALID_TYPE, got %lu\n",
GetLastError());
1729 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1741 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1753 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1765 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1776 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1783 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1790 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1797 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1802 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1807 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1812 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1817 "expected ERROR_INVALID_PARAMETER, got %lu\n",
GetLastError());
1836 ok(
value == 0xcdef,
"Expected 0xcdef, got %lu\n",
value);
1843 ok(
value == 0x89ab,
"Expected 0x89ab, got %lu\n",
value);
1850 ok(
value == 0x4567,
"Expected 0x4567, got %lu\n",
value);
1857 ok(
value == 0x0123,
"Expected 0x0123, got %lu\n",
value);
1917 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1929 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1941 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1953 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
1968 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1980 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
1992 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
2004 ok(
value == 0xdead,
"Expected 0xdead, got %lu\n",
value);
2016 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
2028 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
2040 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
2052 ok(
value == 0xbeefdead,
"Expected 0xbeefdead, got %lu\n",
value);
2084 ok(!
ret,
"expected failure\n");
2148 skip(
"nxdomain returned success. Broken ISP redirects?\n");
2152 "expected ERROR_WINHTTP_NAME_NOT_RESOLVED got %lu\n",
GetLastError());
2164 skip(
"Skipping host resolution tests, host resolution performed by proxy\n");
2182 skip(
"connection failed, skipping\n");
2185 ok(
ret,
"failed to send request\n");
2195"<HEAD><TITLE>winhttp test page</TITLE></HEAD>\r\n"
2196"<BODY>The quick brown fox jumped over the lazy dog<P></BODY>\r\n"
2200"HTTP/1.1 200 OK\r\n"
2201"Server: winetest\r\n"
2205"HTTP/1.1 200 OK\r\n"
2206"Server: winetest\r\n"
2207"Content-length: 0\r\n"
2211"HTTP/1.1 400 Bad Request\r\n"
2215"HTTP/1.1 200 OK\r\n"
2216"Set-Cookie: name = value \r\n"
2217"Set-Cookie: NAME = value \r\n"
2221"HTTP/1.1 200 OK\r\n"
2222"Set-Cookie: name2=value; Domain = localhost; Path=/cookie5;Expires=Wed, 13 Jan 2021 22:23:01 GMT; HttpOnly; \r\n"
2226"HTTP/1.1 204 No Content\r\n"
2227"Server: winetest\r\n"
2231"HTTP/1.1 304 Not Modified\r\n"
2235"HTTP/1.1 401 Unauthorized\r\n"
2236"Server: winetest\r\n"
2237"Connection: close\r\n"
2238"WWW-Authenticate: Basic realm=\"placebo\"\r\n"
2239"Content-Length: 12\r\n"
2240"Content-Type: text/plain\r\n"
2244"HTTP/1.1 200 OK\r\n"
2245"Server: winetest\r\n"
2246"Connection: close\r\n"
2247"Content-Length: 11\r\n"
2248"Content-Type: text/plain\r\n"
2252"HTTP/1.1 200 OK\r\n"
2253"Content-Length: 100\r\n"
2257"HTTP/1.1 401 Unauthorized\r\n"
2258"Server: winetest\r\n"
2259"WWW-Authenticate: Bearer\r\n"
2260"WWW-Authenticate: Basic realm=\"placebo\"\r\n"
2261"WWW-Authenticate: NTLM\r\n"
2262"Content-Length: 10\r\n"
2263"Content-Type: text/plain\r\n"
2267"HTTP/1.1 401 Unauthorized\r\n"
2268"Server: winetest\r\n"
2269"WWW-Authenticate: Basic realm=\"placebo\"\r\n"
2270"WWW-Authenticate: NTLM\r\n"
2271"Content-Length: 10240\r\n"
2272"Content-Type: text/plain\r\n"
2276"HTTP/1.1 302 Found\r\n"
2277"Content-Length: 0\r\n"
2279"WWW-Authenticate: Passport1.4\r\n"
2283"HTTP/1.1 101 Switching Protocols\r\n"
2284"Server: winetest\r\n"
2285"Upgrade: websocket\r\n"
2286"Connection: Upgrade\r\n";
2289"HTTP/1.1 307 Temporary Redirect\r\n"
2290"Content-Length: 0\r\n"
2291"Location: /temporary\r\n"
2292"Connection: close\r\n\r\n";
2295"HTTP/1.1 200 OK\r\n"
2296"Server: winetest\r\n"
2297"SpaceAfterHdr : bad\r\n"
2302"function FindProxyForURL(url, host) {\r\n"
2303" url = url.replace(/[:/]/g, '_');\r\n"
2304" return 'PROXY ' + url + '_' + host + ':8080';\r\n"
2317#define BIG_BUFFER_LEN 0x2250
2328 strcat(
data,
"258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
2354 if (
i < 4)
continue;
2365 int r,
c = -1,
i, on;
2370 int last_request = 0;
2404 if (
strstr(
buffer,
"Authorization: Basic dXNlcjpwd2Q="))
2412 if (
strstr(
buffer,
"Authorization: Basic dXNlcjpwd2Q="))
2466 for (
i = 0;
i < 10240;
i++)
send(
c,
"A", 1, 0);
2484 if (
strstr(
buffer,
"Cookie: name=value2; NAME=value; name=value\r\n") ||
2492 if (
strstr(
buffer,
"Cookie: NAME=value; name=value\r\n") ||
2505 static const char res[] =
"%0D%0A%1F%7F%3C%20%one?%1F%7F%20!%22%23$%&'()*+,-./:;%3C=%3E?@%5B%5C%5D"
2506 "%5E_%60%7B%7C%7D~%0D%0A ";
2507 static const char res2[] =
"%0D%0A%1F%7F%3C%20%25two?%1F%7F%20!%22%23$%25&'()*+,-./:;%3C=%3E?@%5B%5C%5D"
2508 "%5E_%60%7B%7C%7D~%0D%0A ";
2509 static const char res3[] =
"\x1f\x7f<%20%three?\x1f\x7f%20!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ";
2510 static const char res4[] =
"%0D%0A%1F%7F%3C%20%four?\x1f\x7f%20!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ";
2511 static const char res5[] =
"&text=one%C2%80%7F~";
2512 static const char res6[] =
"&text=two%C2%80\x7f~";
2513 static const char res7[] =
"&text=%E5%90%9B%E3%81%AE%E5%90%8D%E3%81%AF";
2591 ok(
r == 4,
"got %d.\n",
r);
2606 ok(
r > 0,
"got %d.\n",
r);
2610 ok(!
r,
"got %d, buffer[0] %d.\n",
r,
buffer[0]);
2616 ok(!
r,
"got %d, buffer[0] %d.\n",
r,
buffer[0] );
2622 }
while (!last_request);
2632 WCHAR buffer2[0x100];
2685 ok(!
ret,
"unexpected success\n");
2687 ok(supported == 0xdeadbeef,
"got %lu\n", supported);
2691 size =
sizeof(buffer2);
2692 memset(buffer2, 0,
sizeof(buffer2));
2696 "WinHttpQueryHeaders returned invalid end of header string\n");
2698 size =
sizeof(buffer2);
2699 memset(buffer2, 0,
sizeof(buffer2));
2703 "WinHttpQueryHeaders returned invalid end of header string\n");
2704 ok(buffer2[(
size /
sizeof(
WCHAR)) - 2] != 0,
"returned string has too many NULL characters\n");
2710 if (verb && !
wcscmp(verb,
L"PUT"))
2727 static const WCHAR *methods[] = {
L"POST",
L"PUT"};
2782 ok(!
ret,
"expected failure\n");
2788 ok(!
ret,
"expected failure\n");
2791 supported = 0xdeadbeef;
2795 ok(!
ret,
"expected failure\n");
2797 ok(supported == 0xdeadbeef,
"got %lu\n", supported);
2799 supported =
first = 0xdeadbeef;
2803 ok(!
ret,
"expected failure\n");
2805 ok(supported == 0xdeadbeef,
"got %lu\n", supported);
2812 ok(!
ret,
"expected failure\n");
2814 ok(supported == 0xdeadbeef,
"got %lu\n", supported);
2822 ok(!
ret,
"expected failure\n");
2824 ok(supported == 0xdeadbeef,
"got %lu\n", supported);
2846 ok(
size == 12,
"expected 12, got %lu\n",
size);
2854 ok(
ret,
"failed to query authentication schemes %lu\n",
error);
2863 ok(
ret,
"failed to set credentials %lu\n",
error);
2875 ok(!
ret,
"expected failure\n");
2881 ok(!
ret,
"expected failure\n");
2887 ok(!
ret,
"expected failure\n");
2893 ok(!
ret,
"expected failure\n");
2917 ok(
size == 11,
"expected 11, got %lu\n",
size);
2956 ok(
size == 11,
"expected 11, got %lu\n",
size);
3053 ok(
ret,
"expected success\n");
3056 ok(
ret,
"expected success\n");
3060 ok(
ret,
"expected success\n");
3068 ok(
ret,
"expected success\n");
3102 ok(
ret,
"expected success\n");
3105 ok(
ret,
"expected success\n");
3110 ok(
ret,
"expected success\n");
3114 ok(
ret,
"expected success\n");
3120 ok(
ret,
"expected success\n");
3125 ok(
ret,
"expected success\n");
3159 ok(!
ret,
"expected failure\n");
3188 ok(!
ret,
"expected error\n");
3190 "expected ERROR_WINHTTP_INCORRECT_HANDLE_STATE, got %lu\n",
GetLastError());
3192 "expected 12345, got %lu\n",
size);
3196 ok(
ret,
"expected success\n");
3199 ok(
ret,
"expected success\n");
3205 ok(
ret,
"expected success\n");
3213 ok(!
ret,
"expected no content-length header\n");
3220 ok(
ret,
"expected success\n");
3227 ok(
ret,
"expected success\n");
3230 ok(!bytes_read,
"expected 0, got %lu\n", bytes_read);
3234 ok(
ret,
"expected success\n");
3235 ok(
size == 0,
"expected 0, got %lu\n",
size);
3242 ok(!
ret,
"expected error\n");
3244 ok(
size == 12345,
"expected 12345, got %lu\n",
size);
3388 char buf[128], *large_buf;
3392 if (!pWinHttpWebSocketCompleteUpgrade)
3394 win_skip(
"WinHttpWebSocketCompleteUpgrade not supported\n");
3414 ok(!
ret,
"success\n");
3421 ok(!
ret,
"success\n");
3430 ok(!
ret,
"success\n");
3439 ok(!
ret,
"success\n");
3449 ok(!
ret,
"success\n");
3456 ok(!
ret,
"success\n");
3504 ok(!
ret,
"success\n");
3517 ok(!
ret,
"success\n");
3542 socket2 = pWinHttpWebSocketCompleteUpgrade(
request, 0);
3544 ok(socket2 !=
socket,
"got same socket\n");
3605 broken_buffer_sizes =
TRUE;
3658 if (!broken_buffer_sizes)
3745 ok(
buf[0] ==
'R',
"got %c\n",
buf[0]);
3746 ok(
count,
"got zero count\n");
3753 memcpy(large_buf,
"hello",
sizeof(
"hello"));
3754 memcpy(large_buf +
sizeof(
buf),
"world",
sizeof(
"world"));
3773 ok(
buf[0] ==
'h',
"got %c\n",
buf[0]);
3782 ok(
buf[0] ==
'w',
"got %c\n",
buf[0]);
3803 sizeof(
"success2"));
3829 close_status = 0xdead;
3834 ok(close_status == 1000,
"got %d\n", close_status);
3851 memcpy(today,
L"If-Modified-Since: ",
sizeof(
L"If-Modified-Since: "));
3894 ok(
start <= 2000,
"Expected less than 2 seconds for the test, got %lu ms\n",
start);
3899 static const WCHAR expected_headers[] =
3901 L"HTTP/1.1 200 OK\r\n"
3902 L"Server: winetest\r\n"
3903 L"SpaceAfterHdr: bad\r\n"
3914 static const WCHAR bad_headers[] =
3915 L"Content-Type: text/html\n\r"
3917 L"Test2: Value2\n\n\n"
3918 L"Test3: Value3\r\r\r"
3919 L"Test4: Value4\r\n\r\n"
3929 {
L"Content-Type",
L"text/html"},
3930 {
L"Test1",
L"Value1"},
3931 {
L"Test2",
L"Value2"},
3932 {
L"Test3",
L"Value3"},
3933 {
L"Test4",
L"Value4"},
3934 {
L"Cookie",
L"111"},
3990 DWORD total_len = 0;
4005 trace(
"waiting for response\n");
4009 trace(
"finished waiting for response\n");
4016 if (
ret)
ok(
len != 0xdeadbeef,
"WinHttpQueryDataAvailable return wrong length\n" );
4024 ok(
len == bytes_read,
"only got %lu of %lu available\n", bytes_read,
len );
4027 if (!bytes_read)
break;
4028 total_len += bytes_read;
4029 trace(
"read bytes %lu, total_len: %lu\n", bytes_read, total_len);
4186 "request failed unexpectedly %lu\n",
status );
4219 static const WCHAR objW[] =
4220 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'\r',
'\n',0x1f,0x7f,
'<',
' ',
'%',
'o',
'n',
'e',
'?',0x1f,0x7f,
' ',
'!',
'"',
'#',
4221 '$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'@',
'[',
'\\',
']',
'^',
'_',
'`',
4222 '{',
'|',
'}',
'~',
'\r',
'\n',0};
4223 static const WCHAR obj2W[] =
4224 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'\r',
'\n',0x1f,0x7f,
'<',
' ',
'%',
't',
'w',
'o',
'?',0x1f,0x7f,
' ',
'!',
'"',
'#',
4225 '$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'@',
'[',
'\\',
']',
'^',
'_',
'`',
4226 '{',
'|',
'}',
'~',
'\r',
'\n',0};
4227 static const WCHAR obj3W[] =
4228 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'\r',
'\n',0x1f,0x7f,
'<',
' ',
'%',
't',
'h',
'r',
'e',
'e',
'?',0x1f,0x7f,
' ',
'!',
4229 '"',
'#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'@',
'[',
'\\',
']',
'^',
4230 '_',
'`',
'{',
'|',
'}',
'~',
'\r',
'\n',0};
4231 static const WCHAR obj4W[] =
4232 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'\r',
'\n',0x1f,0x7f,
'<',
' ',
'%',
'f',
'o',
'u',
'r',
'?',0x1f,0x7f,
' ',
'!',
'"',
4233 '#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
':',
';',
'<',
'=',
'>',
'?',
'@',
'[',
'\\',
']',
'^',
'_',
4234 '`',
'{',
'|',
'}',
'~',
'\r',
'\n',0};
4235 static const WCHAR obj5W[] =
4236 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'&',
't',
'e',
'x',
't',
'=',
'o',
'n',
'e',0x80,0x7f,0x7e,0};
4237 static const WCHAR obj6W[] =
4238 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'&',
't',
'e',
'x',
't',
'=',
't',
'w',
'o',0x80,0x7f,0x7e,0};
4239 static const WCHAR obj7W[] =
4240 {
'/',
'e',
's',
'c',
'a',
'p',
'e',
'&',
't',
'e',
'x',
't',
'=',0x541b,0x306e,0x540d,0x306f,0};
4264 WINHTTP_CONNECTION_INFO
info;
4283 win_skip(
"WINHTTP_OPTION_CONNECTION_INFO not supported\n" );
4286 ok( !
ret,
"unexpected success\n" );
4296 ok( !
ret,
"unexpected success\n" );
4321 static const WCHAR headersW[] =
4322 L"HTTP/1.1 401 Found\r\nContent-Length: 0\r\nLocation: /\r\nWWW-Authenticate: Passport1.4\r\n\r\n";
4350 win_skip(
"no support for Passport redirects\n");
4385 static WCHAR userW[] = {
'u',
's',
'e',
'r',0};
4386 static WCHAR passW[] = {
'p',
'a',
's',
's',0};
4387 static WCHAR proxy_userW[] = {
'p',
'r',
'o',
'x',
'y',
'u',
's',
'e',
'r',0};
4388 static WCHAR proxy_passW[] = {
'p',
'r',
'o',
'x',
'y',
'p',
'a',
's',
's',0};
4394 ses =
WinHttpOpen(
L"winetest", 0, proxy_userW, proxy_passW, 0);
4413 ok(
size == 2,
"Unexpected size %lu\n",
size);
4425 ok(
size == 2,
"Unexpected size %lu\n",
size);
4467 ok(
size == 2,
"Unexpected size %lu\n",
size);
4479 ok(
size == 2,
"Unexpected size %lu\n",
size);
4579 ok(!
ret,
"expected failure\n");
4585 ok(!
ret,
"expected failure\n");
4614 static const WCHAR data_start[] = {
'<',
'!',
'D',
'O',
'C',
'T',
'Y',
'P',
'E',
' ',
'h',
't',
'm',
'l',
' ',
'P',
'U',
'B',
'L',
'I',
'C'};
4616 IWinHttpRequest *req;
4634 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4641 V_BOOL( &async ) = VARIANT_FALSE;
4645 hr = IWinHttpRequest_Open( req,
method,
url, async );
4652 hr = IWinHttpRequest_Send( req,
data );
4655 if (
hr !=
S_OK)
goto done;
4671 hr = IWinHttpRequest_Abort( req );
4677 hr = IWinHttpRequest_Abort( req );
4680 IWinHttpRequest_Release( req );
4682 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4687 hr = IWinHttpRequest_Open( req,
method,
url, async );
4692 hr = IWinHttpRequest_Open( req,
method,
url, async );
4697 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4704 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags );
4709 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4719 hr = IWinHttpRequest_Open( req,
method,
url, async );
4724 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
4731 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage,
cp );
4736 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
4744 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage,
cp );
4750 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &
cp );
4757 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4763 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags );
4768 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags );
4773 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags);
4778 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4784 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags );
4789 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4793 hr = IWinHttpRequest_Abort( req );
4796 hr = IWinHttpRequest_Send( req,
empty );
4799 hr = IWinHttpRequest_Abort( req );
4802 IWinHttpRequest_Release( req );
4804 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
4807 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
4810 hr = IWinHttpRequest_get_ResponseText( req, &response );
4813 hr = IWinHttpRequest_get_Status( req,
NULL );
4816 hr = IWinHttpRequest_get_Status( req, &
status );
4819 hr = IWinHttpRequest_get_StatusText( req,
NULL );
4822 hr = IWinHttpRequest_get_StatusText( req, &status_text );
4825 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
4828 hr = IWinHttpRequest_SetTimeouts( req, 10000, 10000, 10000, 10000 );
4831 hr = IWinHttpRequest_SetCredentials( req,
NULL,
NULL, 0xdeadbeef );
4838 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4841 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4844 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4847 hr = IWinHttpRequest_GetAllResponseHeaders( req,
NULL );
4850 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
4853 hr = IWinHttpRequest_GetResponseHeader( req,
NULL,
NULL );
4857 hr = IWinHttpRequest_GetResponseHeader( req, connection,
NULL );
4860 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
4863 hr = IWinHttpRequest_SetRequestHeader( req,
NULL,
NULL );
4867 hr = IWinHttpRequest_SetRequestHeader( req,
date,
NULL );
4871 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
4874 hr = IWinHttpRequest_SetAutoLogonPolicy( req, 0xdeadbeef );
4877 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
4884 hr = IWinHttpRequest_Open( req,
method,
url, async );
4887 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
4890 hr = IWinHttpRequest_get_ResponseText( req, &response );
4893 hr = IWinHttpRequest_get_Status( req, &
status );
4896 hr = IWinHttpRequest_get_StatusText( req, &status_text );
4899 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
4902 hr = IWinHttpRequest_SetTimeouts( req, 10000, 10000, 10000, 10000 );
4905 hr = IWinHttpRequest_SetCredentials( req,
NULL,
NULL, 0xdeadbeef );
4909 hr = IWinHttpRequest_SetCredentials( req,
username,
NULL, 0xdeadbeef );
4913 hr = IWinHttpRequest_SetCredentials( req,
NULL,
password, 0xdeadbeef );
4919 hr = IWinHttpRequest_SetCredentials( req,
NULL,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4922 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
4927 hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags,
flags );
4934 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
4937 hr = IWinHttpRequest_SetProxy( req, 0xdeadbeef,
proxy_server, bypass_list );
4940 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
4943 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
4946 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
4949 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
4952 hr = IWinHttpRequest_SetRequestHeader( req,
date,
NULL );
4955 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
4958 hr = IWinHttpRequest_Send( req,
empty );
4961 hr = IWinHttpRequest_Send( req,
empty );
4966 hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_SslErrorIgnoreFlags, &
flags );
4970 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
4973 hr = IWinHttpRequest_get_ResponseText( req, &response );
4978 hr = IWinHttpRequest_get_Status( req,
NULL );
4982 hr = IWinHttpRequest_get_Status( req, &
status );
4986 hr = IWinHttpRequest_get_StatusText( req,
NULL );
4989 hr = IWinHttpRequest_get_StatusText( req, &status_text );
4994 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
4997 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
5000 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
5003 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
5006 hr = IWinHttpRequest_GetAllResponseHeaders( req,
NULL );
5009 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
5013 hr = IWinHttpRequest_GetResponseHeader( req,
NULL,
NULL );
5016 hr = IWinHttpRequest_GetResponseHeader( req, connection,
NULL );
5019 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
5023 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
5026 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
5032 hr = IWinHttpRequest_WaitForResponse( req,
timeout, &succeeded );
5035 hr = IWinHttpRequest_get_Status( req, &
status );
5038 hr = IWinHttpRequest_get_StatusText( req, &status_text );
5042 hr = IWinHttpRequest_SetCredentials( req,
username,
password, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER );
5045 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
5048 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
5051 hr = IWinHttpRequest_Send( req,
empty );
5054 hr = IWinHttpRequest_get_ResponseText( req,
NULL );
5057 hr = IWinHttpRequest_get_ResponseText( req, &response );
5061 hr = IWinHttpRequest_get_ResponseBody( req,
NULL );
5066 hr = IWinHttpRequest_get_ResponseBody( req, &
body );
5075 hr = IWinHttpRequest_get_ResponseStream( req, &
body );
5087 ok(
count != 0xdeadbeef,
"count not set\n" );
5088 ok(
buf[0],
"no data\n" );
5092 hr = IWinHttpRequest_get_ResponseStream( req, &body2 );
5097 hr = IUnknown_QueryInterface(
V_UNKNOWN( &body2 ), &IID_IStream, (
void **)&stream2 );
5100 IStream_Release( stream2 );
5108 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_PROXY,
proxy_server, bypass_list );
5111 hr = IWinHttpRequest_SetProxy( req, HTTPREQUEST_PROXYSETTING_DIRECT,
proxy_server, bypass_list );
5114 hr = IWinHttpRequest_GetAllResponseHeaders( req, &
headers );
5118 hr = IWinHttpRequest_GetResponseHeader( req, connection, &
value );
5122 hr = IWinHttpRequest_SetRequestHeader( req,
date, today );
5125 hr = IWinHttpRequest_SetAutoLogonPolicy( req, AutoLogonPolicy_OnlyIfBypassProxy );
5128 hr = IWinHttpRequest_Send( req,
empty );
5131 hr = IWinHttpRequest_Abort( req );
5134 hr = IWinHttpRequest_Abort( req );
5137 IWinHttpRequest_Release( req );
5147 ok(
count != 0xdeadbeef,
"count not set\n" );
5148 ok(
buf[0],
"no data\n" );
5149 IStream_Release(
stream );
5151 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
5156 hr = IWinHttpRequest_Open( req,
method,
url, async );
5159 hr = IWinHttpRequest_Send( req,
empty );
5162 hr = IWinHttpRequest_WaitForResponse( req,
timeout, &succeeded );
5165 IWinHttpRequest_Release( req );
5177 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
5183 V_BOOL( &async ) = VARIANT_FALSE;
5184 hr = IWinHttpRequest_Open( req,
method,
url, async );
5189 hr = IWinHttpRequest_Send( req,
empty );
5193 if (
hr !=
S_OK)
goto done;
5195 hr = IWinHttpRequest_get_ResponseText( req, &response );
5198 ok( !
memcmp(response, data_start,
sizeof(data_start)),
"got %s\n",
5205 IWinHttpRequest_Release( req );
5207 hr =
CoCreateInstance( &CLSID_WinHttpRequest,
NULL, CLSCTX_INPROC_SERVER, &IID_IWinHttpRequest, (
void **)&req );
5215 V_BOOL( &async ) = VARIANT_FALSE;
5216 hr = IWinHttpRequest_Open( req,
method,
url, async );
5221 hr = IWinHttpRequest_get_Status( req, &
status );
5226 hr = IWinHttpRequest_Send( req,
data );
5230 hr = IWinHttpRequest_get_ResponseText( req, &response );
5236 hr = IWinHttpRequest_get_Status( req, &
status );
5241 IWinHttpRequest_Release( req );
5267 WCHAR openW[] = {
'O',
'p',
'e',
'n',0};
5284 ok(
hr ==
S_OK,
"CLSIDFromProgID error %#lx\n",
hr);
5420 V_I4(&
arg[0]) = WinHttpRequestOption_URLCodePage;
5467 V_I4(&
arg[0]) = AutoLogonPolicy_Never;
5473 IWinHttpRequest_Release(
request);
5487 ok( !
ret,
"expected failure\n" );
5494 ok( !
ret,
"expected failure\n" );
5500 ok( !
ret,
"expected failure\n" );
5541 memset( &cfg, 0,
sizeof(cfg) );
5546 ok( !
ret,
"expected failure\n" );
5552 ok(
ret,
"expected success\n" );
5578 ok( !
ret,
"expected failure\n" );
5587 ok( !
ret,
"expected failure\n" );
5593 ok( !
ret,
"expected failure\n" );
5599 ok( !
ret,
"expected failure\n" );
5605 ok( !
ret,
"expected failure\n" );
5614 ok( !
ret,
"expected failure\n" );
5618 options.dwAutoDetectFlags = 0;
5623 ok( !
ret,
"expected failure\n" );
5632 ok( !
ret,
"expected failure\n" );
5645 trace(
"Proxy.AccessType=%lu\n",
info.dwAccessType);
5652 ok( !
ret,
"expected failure\n" );
5656 options.dwAutoDetectFlags = 0;
5657 options.lpszAutoConfigUrl =
L"http://wpad/wpad.dat";
5663 trace(
"Proxy.AccessType=%lu\n",
info.dwAccessType);
5672 options.lpszAutoConfigUrl =
L"http://wpad/wpad.dat";
5689 ok( !
ret,
"expected failure\n" );
5693 options.dwAutoDetectFlags = 0;
5694 options.lpszAutoConfigUrl = pac_url;
5700 options.dwFlags &= ~WINHTTP_AUTOPROXY_NO_CACHE_SVC;
5703 ok(
ret,
"expected success\n" );
5705 "info.dwAccessType = %lu\n",
info.dwAccessType);
5706 ok(!
wcscmp(
info.lpszProxy,
L"http___WINEHQ.ORG_Test.html_WINEHQ.ORG:8080") ||
5707 broken(old_winhttp && !
wcscmp(
info.lpszProxy,
L"HTTP___WINEHQ.ORG_Test.html_WINEHQ.ORG:8080")),
5709 ok(!
info.lpszProxyBypass,
"info.ProxyBypass = %s\n",
5716 ok(
ret,
"expected success\n" );
5718 "info.dwAccessType = %lu\n",
info.dwAccessType);
5719 ok(!
wcscmp(
info.lpszProxy,
L"http___winehq.org_Test.html_winehq.org:8080") ||
5720 broken(old_winhttp && !
wcscmp(
info.lpszProxy,
L"HTTP___winehq.org_Test.html_winehq.org:8080")),
5722 ok(!
info.lpszProxyBypass,
"info.ProxyBypass = %s\n",
5731 ok(
ret,
"expected success\n" );
5733 "info.dwAccessType = %lu\n",
info.dwAccessType);
5734 ok(!
wcscmp(
info.lpszProxy,
L"http___WINEHQ.ORG_Test.html_WINEHQ.ORG:8080"),
5736 ok(!
info.lpszProxyBypass,
"info.ProxyBypass = %s\n",
5751 trace(
"starting chunked read test\n" );
5755 if (!ses)
goto done;
5759 if (!con)
goto done;
5763 if (!req)
goto done;
5769 skip(
"connection failed, skipping\n");
5773 if (!
ret)
goto done;
5777 if (!
ret)
goto done;
5782 ok(
ret,
"failed to get TRANSFER_ENCODING header with error %lu\n",
GetLastError() );
5793 trace(
"entering query loop\n" );
5799 if (
ret)
ok(
len != 0xdeadbeef,
"WinHttpQueryDataAvailable return wrong length\n" );
5800 trace(
"got %lu available\n",
len );
5809 buf[bytes_read] = 0;
5810 trace(
"WinHttpReadData -> %d %lu\n",
ret, bytes_read );
5811 ok(
len == bytes_read,
"only got %lu of %lu available\n", bytes_read,
len );
5812 ok(
buf[bytes_read - 1] ==
'\n',
"received partial line '%s'\n",
buf );
5815 if (!bytes_read)
break;
5836 ok(
session !=
NULL,
"WinHttpOpen failed to open session.\n");
5839 ok(connection !=
NULL,
"WinHttpConnect failed to open a connection, error: %lu\n",
GetLastError());
5846 skip(
"Network unreachable, skipping.\n");
5860 skip(
"connection failed, skipping\n");
5873 ok(!
ret,
"WinHttpReceiveResponse succeeded, expected failure\n");
5880 ok(!
wcscmp(
url,
L"http://test.winehq.org/tests/redirecttest.php?id=2&max=3") ||
5881 broken(!
wcscmp(
url,
L"http://test.winehq.org/tests/redirecttest.php?id=1&max=3")) ,
5886 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing request, got %d.\n",
ret);
5888 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing connection, got %d.\n",
ret);
5890 ok(
ret ==
TRUE,
"WinHttpCloseHandle failed on closing session, got %d.\n",
ret);
5895 0x30, 0x82, 0x0b, 0x1d, 0x02, 0x01, 0x03, 0x30, 0x82, 0x0a, 0xe3, 0x06,
5896 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82,
5897 0x0a, 0xd4, 0x04, 0x82, 0x0a, 0xd0, 0x30, 0x82, 0x0a, 0xcc, 0x30, 0x82,
5898 0x05, 0x07, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07,
5899 0x06, 0xa0, 0x82, 0x04, 0xf8, 0x30, 0x82, 0x04, 0xf4, 0x02, 0x01, 0x00,
5900 0x30, 0x82, 0x04, 0xed, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
5901 0x01, 0x07, 0x01, 0x30, 0x1c, 0x06, 0x0a, 0x2a, 0x86, 0x48, 0x86, 0xf7,
5902 0x0d, 0x01, 0x0c, 0x01, 0x06, 0x30, 0x0e, 0x04, 0x08, 0xac, 0x3e, 0x35,
5903 0xa8, 0xed, 0x0d, 0x50, 0x07, 0x02, 0x02, 0x08, 0x00, 0x80, 0x82, 0x04,
5904 0xc0, 0x5a, 0x62, 0x55, 0x25, 0xf6, 0x2c, 0xf1, 0x78, 0x6c, 0x63, 0x96,
5905 0x8a, 0xea, 0x04, 0x64, 0xb3, 0x99, 0x3b, 0x80, 0x50, 0x05, 0x37, 0x55,
5906 0xa3, 0x5e, 0x9f, 0x35, 0xc3, 0x3c, 0xdc, 0xf6, 0xc4, 0xc1, 0x39, 0xa2,
5907 0xd7, 0x50, 0xad, 0xf9, 0x29, 0x3c, 0x51, 0xea, 0x15, 0x20, 0x25, 0xd3,
5908 0x4d, 0x69, 0xdf, 0x10, 0xd8, 0x9d, 0x60, 0x78, 0x8a, 0x70, 0x44, 0x7f,
5909 0x01, 0x4f, 0x4a, 0xfa, 0xab, 0xfd, 0x46, 0x48, 0x96, 0x2b, 0x69, 0xfc,
5910 0x11, 0xf8, 0x3f, 0xd3, 0x79, 0x09, 0x75, 0x81, 0x47, 0xdf, 0xce, 0xfe,
5911 0x07, 0x2f, 0x0a, 0xd8, 0xac, 0x87, 0x14, 0x1f, 0x7b, 0x95, 0x70, 0xee,
5912 0x7e, 0x52, 0x90, 0x11, 0xd6, 0x69, 0xf4, 0xd5, 0x38, 0x85, 0xc9, 0xc1,
5913 0x07, 0x01, 0xe8, 0xbb, 0xfb, 0xe2, 0x08, 0xa8, 0xfa, 0xbf, 0xf0, 0x92,
5914 0x63, 0x1d, 0xbb, 0x2b, 0x45, 0x6f, 0xce, 0x97, 0x01, 0xd7, 0x95, 0xf0,
5915 0x9c, 0x9a, 0x6b, 0x73, 0x01, 0xbf, 0xf9, 0x3d, 0xc8, 0x2b, 0x86, 0x7a,
5916 0xd5, 0x65, 0x84, 0xd7, 0xff, 0xb2, 0xf9, 0x20, 0x52, 0x35, 0xc5, 0x60,
5917 0x33, 0x70, 0x1d, 0x2f, 0x26, 0x09, 0x1c, 0x22, 0x17, 0xd8, 0x08, 0x4e,
5918 0x69, 0x20, 0xe2, 0x71, 0xe4, 0x07, 0xb1, 0x48, 0x5f, 0x20, 0x08, 0x7a,
5919 0xbf, 0x65, 0x53, 0x23, 0x07, 0xf9, 0x6c, 0xde, 0x3e, 0x29, 0xbf, 0x6b,
5920 0xef, 0xbb, 0x6a, 0x5f, 0x79, 0xa1, 0x72, 0xa1, 0x10, 0x24, 0x80, 0xb4,
5921 0x44, 0xb8, 0xc9, 0xfc, 0xa3, 0x36, 0x7e, 0x23, 0x37, 0x58, 0xc6, 0x1e,
5922 0xe8, 0x42, 0x4d, 0xb5, 0xf5, 0x58, 0x93, 0x21, 0x38, 0xa2, 0xc4, 0xa9,
5923 0x01, 0x96, 0xf9, 0x61, 0xac, 0x55, 0xb3, 0x3d, 0xe4, 0x54, 0x8b, 0x6c,
5924 0xc3, 0x83, 0xff, 0x50, 0x87, 0x94, 0xe8, 0x35, 0x3c, 0x26, 0x0d, 0x20,
5925 0x8a, 0x25, 0x0e, 0xb6, 0x67, 0x78, 0x29, 0xc7, 0xbf, 0x76, 0x8e, 0x62,
5926 0x62, 0xc4, 0x50, 0xd6, 0xc5, 0x3c, 0xb4, 0x7a, 0x35, 0xbe, 0x53, 0x52,
5927 0xc4, 0xe4, 0x10, 0xb3, 0xe0, 0x73, 0xb0, 0xd1, 0xc1, 0x5a, 0x4f, 0x4e,
5928 0x64, 0x0d, 0x92, 0x51, 0x2d, 0x4d, 0xec, 0xb0, 0xc6, 0x40, 0x1b, 0x03,
5929 0x89, 0x7f, 0xc2, 0x2c, 0xe3, 0x2c, 0xbd, 0x8c, 0x9c, 0xd9, 0xe0, 0x08,
5930 0x59, 0xd3, 0xaf, 0x48, 0x56, 0x89, 0x60, 0x85, 0x76, 0xe0, 0xd8, 0x7c,
5931 0xcf, 0x02, 0x8f, 0xfd, 0xb2, 0x8f, 0x2b, 0x61, 0xcf, 0x28, 0x56, 0x8b,
5932 0x6b, 0x03, 0x2b, 0x2f, 0x83, 0x31, 0xa0, 0x1c, 0xd1, 0x6c, 0x87, 0x49,
5933 0xc4, 0x77, 0x55, 0x1f, 0x61, 0x45, 0x58, 0x88, 0x9f, 0x01, 0xc3, 0x63,
5934 0x62, 0x30, 0x35, 0xdf, 0x61, 0x74, 0x55, 0x63, 0x3f, 0xae, 0x41, 0xc1,
5935 0xb8, 0xf0, 0x9f, 0xab, 0x25, 0xad, 0x41, 0x5c, 0x1f, 0x00, 0x0d, 0xef,
5936 0xf0, 0xcf, 0xaf, 0x41, 0x23, 0xca, 0x8c, 0x38, 0xea, 0x5a, 0xe4, 0x8b,
5937 0xb4, 0x89, 0xd0, 0x76, 0x7f, 0x2b, 0x77, 0x8f, 0xe4, 0x44, 0xd5, 0x37,
5938 0xac, 0xc2, 0x09, 0x7e, 0x7e, 0x7e, 0x02, 0x5c, 0x27, 0x01, 0xcb, 0x4d,
5939 0xea, 0xb3, 0x97, 0x36, 0x35, 0xd2, 0x05, 0x3c, 0x4e, 0xb8, 0x04, 0x5c,
5940 0xb8, 0x95, 0x3f, 0xc6, 0xbf, 0xd4, 0x20, 0x01, 0xfb, 0xed, 0x37, 0x5a,
5941 0xad, 0x4c, 0x61, 0x93, 0xfe, 0x95, 0x7c, 0x34, 0x11, 0x15, 0x9d, 0x00,
5942 0x0b, 0x99, 0x69, 0xcb, 0x7e, 0xb9, 0x53, 0x46, 0x57, 0x39, 0x3f, 0x59,
5943 0x4b, 0x30, 0x8d, 0xfb, 0x84, 0x66, 0x2d, 0x06, 0xc9, 0x88, 0xa6, 0x18,
5944 0xd7, 0x36, 0xc6, 0xf6, 0xf7, 0x47, 0x85, 0x38, 0xc8, 0x3d, 0x37, 0xea,
5945 0x57, 0x4c, 0xb0, 0x7c, 0x95, 0x29, 0x84, 0xab, 0xbb, 0x19, 0x86, 0xc2,
5946 0xc5, 0x99, 0x01, 0x38, 0x6b, 0xf1, 0xd3, 0x1d, 0xa8, 0x02, 0xf9, 0x6f,
5947 0xaa, 0xf1, 0x57, 0xd0, 0x88, 0x68, 0x62, 0x5f, 0x9f, 0x7a, 0x63, 0xba,
5948 0x3a, 0xc9, 0x95, 0x11, 0x3c, 0xf9, 0xa1, 0xc1, 0x35, 0xfe, 0xd5, 0x12,
5949 0x49, 0x88, 0x0d, 0x5c, 0xe2, 0xd1, 0x15, 0x18, 0xfb, 0xd5, 0x7f, 0x19,
5950 0x3f, 0xaf, 0xa0, 0xcb, 0x31, 0x20, 0x9e, 0x03, 0x93, 0xa4, 0x66, 0xbd,
5951 0x83, 0xe8, 0x60, 0x34, 0x55, 0x0d, 0x97, 0x10, 0x23, 0x24, 0x7a, 0x45,
5952 0x36, 0xb4, 0xc4, 0xee, 0x60, 0x6f, 0xd8, 0x46, 0xc5, 0xac, 0x2b, 0xa9,
5953 0x18, 0x74, 0x83, 0x1e, 0xdf, 0x7c, 0x1a, 0x5a, 0xe8, 0x5f, 0x8b, 0x4f,
5954 0x9f, 0x40, 0x3e, 0x5e, 0xfb, 0xd3, 0x68, 0xac, 0x34, 0x62, 0x30, 0x23,
5955 0xb6, 0xbc, 0xdf, 0xbc, 0xc7, 0x25, 0xd2, 0x1b, 0x57, 0x33, 0xfb, 0x78,
5956 0x22, 0x21, 0x1e, 0x3a, 0xf6, 0x44, 0x18, 0x7e, 0x12, 0x36, 0x47, 0x58,
5957 0xd0, 0x59, 0x26, 0x98, 0x98, 0x95, 0xf4, 0xd1, 0xaa, 0x45, 0xaa, 0xe7,
5958 0xd1, 0xe6, 0x2d, 0x78, 0xf0, 0x8b, 0x1c, 0xfd, 0xf8, 0x50, 0x60, 0xa2,
5959 0x1e, 0x7f, 0xe3, 0x31, 0x77, 0x31, 0x58, 0x99, 0x0f, 0xda, 0x0e, 0xa3,
5960 0xc6, 0x7a, 0x30, 0x45, 0x55, 0x11, 0x91, 0x77, 0x41, 0x79, 0xd3, 0x56,
5961 0xb2, 0x07, 0x00, 0x61, 0xab, 0xec, 0x27, 0xc7, 0x9f, 0xfa, 0x89, 0x08,
5962 0xc2, 0x87, 0xcf, 0xe9, 0xdc, 0x9e, 0x29, 0x22, 0xfb, 0x23, 0x7f, 0x9d,
5963 0x89, 0xd5, 0x6e, 0x75, 0x20, 0xd8, 0x00, 0x5b, 0xc4, 0x94, 0xbb, 0xc5,
5964 0xb2, 0xba, 0x77, 0x2b, 0xf6, 0x3c, 0x88, 0xb0, 0x4c, 0x38, 0x46, 0x55,
5965 0xee, 0x8b, 0x03, 0x15, 0xbc, 0x0a, 0x1d, 0x47, 0x87, 0x44, 0xaf, 0xb1,
5966 0x2a, 0xa7, 0x4d, 0x08, 0xdf, 0x3b, 0x2d, 0x70, 0xa1, 0x67, 0x31, 0x76,
5967 0x6e, 0x6f, 0x40, 0x3b, 0x3b, 0xe8, 0xf9, 0xdf, 0x90, 0xa4, 0xce, 0x7f,
5968 0xb8, 0x2d, 0x69, 0xcb, 0x1c, 0x1e, 0x94, 0xcd, 0xb1, 0xd8, 0x43, 0x22,
5969 0xb8, 0x4f, 0x98, 0x92, 0x74, 0xb3, 0xde, 0xeb, 0x7a, 0xcb, 0xfa, 0xd0,
5970 0x36, 0xe4, 0x5d, 0xfa, 0xd3, 0xce, 0xf9, 0xba, 0x3e, 0x0f, 0x6c, 0xc3,
5971 0x5b, 0xb3, 0x81, 0x84, 0x6e, 0x5d, 0xc1, 0x21, 0x89, 0xec, 0x67, 0x9a,
5972 0xfd, 0x55, 0x20, 0xb0, 0x71, 0x53, 0xae, 0xf8, 0xa4, 0x8d, 0xd5, 0xe5,
5973 0x2d, 0x3a, 0xce, 0x89, 0x55, 0x8c, 0x4f, 0x3b, 0x37, 0x95, 0x4e, 0x15,
5974 0xbe, 0xe7, 0xd1, 0x7a, 0x36, 0x82, 0x45, 0x69, 0x7c, 0x27, 0x4f, 0xb9,
5975 0x4b, 0x7d, 0xcd, 0x59, 0xc8, 0xf4, 0x8b, 0x0f, 0x4f, 0x75, 0x23, 0xd3,
5976 0xd0, 0xc7, 0x10, 0x79, 0xc0, 0xf1, 0xac, 0x14, 0xf7, 0x0d, 0xc8, 0x5e,
5977 0xfc, 0xff, 0x1a, 0x2b, 0x10, 0x88, 0x7e, 0x7e, 0x2f, 0xfa, 0x7b, 0x9f,
5978 0x47, 0x23, 0x34, 0xfc, 0xf5, 0xde, 0xd9, 0xa3, 0x05, 0x99, 0x2a, 0x96,
5979 0x83, 0x3d, 0xa4, 0x7f, 0x6a, 0x66, 0x9b, 0xe7, 0xf1, 0x00, 0x4e, 0x9a,
5980 0xfc, 0x68, 0xd2, 0x74, 0x17, 0xba, 0xc9, 0xc8, 0x20, 0x39, 0xa1, 0xa8,
5981 0x85, 0xc6, 0x10, 0x2b, 0xab, 0x97, 0x34, 0x2d, 0x49, 0x68, 0x57, 0xb0,
5982 0x43, 0xee, 0x25, 0xbb, 0x35, 0x1b, 0x03, 0x99, 0xa3, 0x21, 0x68, 0x66,
5983 0x86, 0x3f, 0xc6, 0xfc, 0x49, 0xf0, 0xba, 0x5f, 0x00, 0xc6, 0xe3, 0x1c,
5984 0xb2, 0x9f, 0x16, 0x7f, 0xc7, 0x40, 0x4a, 0x9a, 0x39, 0xc1, 0x95, 0x69,
5985 0xa2, 0x87, 0xba, 0x58, 0xc6, 0xf2, 0xd6, 0x66, 0xa6, 0x4c, 0x6d, 0x29,
5986 0x9c, 0xa8, 0x6e, 0xa9, 0xd2, 0xe4, 0x54, 0x17, 0x89, 0xe2, 0x43, 0xf0,
5987 0xe1, 0x8b, 0x57, 0x84, 0x6c, 0x87, 0x63, 0x17, 0xbb, 0xf6, 0x33, 0x1b,
5988 0xe4, 0x34, 0x6a, 0x80, 0x70, 0x7b, 0x1b, 0xfd, 0xf8, 0x79, 0x28, 0xc8,
5989 0x3c, 0x8e, 0xa4, 0xd5, 0xb8, 0x96, 0x54, 0xd4, 0xec, 0x72, 0xe5, 0x40,
5990 0x8f, 0x56, 0xde, 0x82, 0x15, 0x72, 0x4d, 0xd8, 0x0c, 0x07, 0xea, 0xe6,
5991 0x44, 0xcd, 0x94, 0x73, 0x5c, 0x04, 0xe8, 0x8e, 0xb7, 0xc7, 0xc9, 0x29,
5992 0xdc, 0x04, 0xef, 0x7c, 0x31, 0x9b, 0x50, 0xbc, 0xea, 0x71, 0x1f, 0x28,
5993 0x22, 0xb6, 0x04, 0x53, 0x2e, 0x71, 0xc4, 0xf6, 0xbb, 0x88, 0x51, 0xee,
5994 0x3e, 0x76, 0x65, 0xb4, 0x4b, 0x1b, 0xa3, 0xec, 0x7b, 0xa7, 0x9d, 0x31,
5995 0x5d, 0xb8, 0x9f, 0xab, 0x6b, 0x54, 0x7d, 0xbd, 0xc1, 0x2c, 0x55, 0xb0,
5996 0x23, 0x8c, 0x06, 0x60, 0x01, 0x4f, 0x60, 0x85, 0x56, 0x7f, 0xfb, 0x99,
5997 0x0c, 0xdc, 0x8c, 0x09, 0x37, 0x46, 0x5b, 0x97, 0x5d, 0xe8, 0x31, 0x00,
5998 0x1b, 0x30, 0x9b, 0x02, 0x92, 0x29, 0xb5, 0x20, 0xce, 0x4b, 0x90, 0xfb,
5999 0x91, 0x07, 0x5a, 0xd3, 0xf5, 0xa0, 0xe6, 0x8f, 0xf8, 0x73, 0xc5, 0x4b,
6000 0xbb, 0xad, 0x2a, 0xeb, 0xa8, 0xb7, 0x68, 0x34, 0x36, 0x47, 0xd5, 0x4b,
6001 0x61, 0x89, 0x53, 0xe6, 0xb6, 0xb1, 0x07, 0xe4, 0x08, 0x2e, 0xed, 0x50,
6002 0xd4, 0x1e, 0xed, 0x7f, 0xbf, 0x35, 0x68, 0x04, 0x45, 0x72, 0x86, 0x71,
6003 0x15, 0x55, 0xdf, 0xe6, 0x30, 0xc0, 0x8b, 0x8a, 0xb0, 0x6c, 0xd0, 0x35,
6004 0x57, 0x8f, 0x04, 0x37, 0xbc, 0xe1, 0xb8, 0xbf, 0x27, 0x37, 0x3d, 0xd0,
6005 0xc8, 0x46, 0x67, 0x42, 0x51, 0x30, 0x82, 0x05, 0xbd, 0x06, 0x09, 0x2a,
6006 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x05, 0xae,
6007 0x04, 0x82, 0x05, 0xaa, 0x30, 0x82, 0x05, 0xa6, 0x30, 0x82, 0x05, 0xa2,
6008 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x0a, 0x01,
6009 0x02, 0xa0, 0x82, 0x04, 0xee, 0x30, 0x82, 0x04, 0xea, 0x30, 0x1c, 0x06,
6010 0x0a, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x01, 0x03, 0x30,
6011 0x0e, 0x04, 0x08, 0x9f, 0xa4, 0x72, 0x2b, 0x6b, 0x0e, 0xcb, 0x9f, 0x02,
6012 0x02, 0x08, 0x00, 0x04, 0x82, 0x04, 0xc8, 0xe5, 0x35, 0xb9, 0x72, 0x28,
6013 0x20, 0x28, 0xad, 0xe3, 0x01, 0xd7, 0x0b, 0xe0, 0x4e, 0x36, 0xc3, 0x73,
6014 0x06, 0xd5, 0xf6, 0x75, 0x1a, 0x78, 0xb2, 0xd8, 0xf6, 0x5a, 0x85, 0x8e,
6015 0x50, 0xa3, 0x05, 0x49, 0x02, 0x2d, 0xf8, 0xa3, 0x2f, 0xe6, 0x02, 0x7a,
6016 0xd5, 0x0b, 0x1d, 0xf1, 0xd1, 0xe4, 0x16, 0xaa, 0x70, 0x2e, 0x34, 0xdb,
6017 0x56, 0xd9, 0x33, 0x94, 0x11, 0xaa, 0x60, 0xd4, 0xfa, 0x5b, 0xd1, 0xb3,
6018 0x2e, 0x86, 0x6a, 0x5a, 0x69, 0xdf, 0x11, 0x91, 0xb0, 0xca, 0x82, 0xff,
6019 0x63, 0xad, 0x6a, 0x0b, 0x90, 0xa6, 0xc7, 0x9b, 0xef, 0x9a, 0xf8, 0x96,
6020 0xec, 0xe4, 0xc4, 0xdf, 0x55, 0x4c, 0x12, 0x07, 0xab, 0x7c, 0x5c, 0x68,
6021 0x47, 0xf2, 0x92, 0xfb, 0x94, 0xab, 0xc3, 0x64, 0xd3, 0xfe, 0xb2, 0x16,
6022 0xb4, 0x78, 0x80, 0x52, 0xe9, 0x32, 0x39, 0x3b, 0x8d, 0x12, 0x91, 0x36,
6023 0xfd, 0xa1, 0x97, 0xc2, 0x0a, 0x4a, 0xf1, 0xb3, 0x8a, 0xe4, 0x01, 0xed,
6024 0x0a, 0xda, 0x2e, 0xa0, 0x38, 0xa9, 0x47, 0x3d, 0x3a, 0x64, 0x87, 0x06,
6025 0xc3, 0x83, 0x60, 0xaf, 0x84, 0xdb, 0x87, 0xff, 0x70, 0x61, 0x43, 0x7d,
6026 0x2d, 0x61, 0x9a, 0xf7, 0x0d, 0xca, 0x0c, 0x0f, 0xbe, 0x43, 0x5b, 0x99,
6027 0xe1, 0x90, 0x64, 0x1f, 0xa7, 0x1b, 0xa6, 0xa6, 0x5c, 0x13, 0x70, 0xa3,
6028 0xdb, 0xd7, 0xf0, 0xe8, 0x7a, 0xb0, 0xd1, 0x9b, 0x52, 0xa6, 0x4f, 0xd6,
6029 0xff, 0x54, 0x4d, 0xa6, 0x15, 0x05, 0x5c, 0xe9, 0x04, 0x6a, 0xc3, 0x49,
6030 0x12, 0x2f, 0x24, 0x03, 0xc3, 0x80, 0x06, 0xa6, 0x07, 0x8b, 0x96, 0xe7,
6031 0x39, 0x31, 0x6d, 0xd3, 0x1b, 0xa5, 0x45, 0x58, 0x04, 0xe7, 0x87, 0xdf,
6032 0x26, 0xfb, 0x1b, 0x9f, 0x92, 0x93, 0x32, 0x12, 0x9a, 0xc9, 0xe6, 0xcb,
6033 0x88, 0x14, 0x9f, 0x23, 0x0b, 0x52, 0xa2, 0xb8, 0x32, 0x6c, 0xa9, 0x33,
6034 0xa1, 0x17, 0xe8, 0x4a, 0xd4, 0x5c, 0x7d, 0xb3, 0xa3, 0x64, 0x86, 0x03,
6035 0x7c, 0x7c, 0x3f, 0x99, 0xdc, 0x21, 0x9f, 0x93, 0xc6, 0xb9, 0x1d, 0xe0,
6036 0x21, 0x79, 0x78, 0x35, 0xdc, 0x1e, 0x27, 0x3c, 0x73, 0x7f, 0x0f, 0xd6,
6037 0x4f, 0xde, 0xe9, 0xb4, 0xb7, 0xe3, 0xf5, 0x72, 0xce, 0x42, 0xf3, 0x91,
6038 0x5b, 0x84, 0xba, 0xbb, 0xae, 0xf0, 0x87, 0x0f, 0x50, 0xa4, 0x5e, 0x80,
6039 0x23, 0x57, 0x2b, 0xa0, 0xa3, 0xc3, 0x8a, 0x2f, 0xa8, 0x7a, 0x1a, 0x65,
6040 0x8f, 0x62, 0xf8, 0x3e, 0xe2, 0xcd, 0xbc, 0x63, 0x56, 0x8e, 0x77, 0xf3,
6041 0xf9, 0x69, 0x10, 0x57, 0xa8, 0xaf, 0x67, 0x2a, 0x9f, 0x7f, 0x7e, 0xeb,
6042 0x1d, 0x99, 0xa6, 0x67, 0xcd, 0x9e, 0x42, 0x2e, 0x5e, 0x4e, 0x61, 0x24,
6043 0xfa, 0xca, 0x2a, 0xeb, 0x62, 0x1f, 0xa3, 0x14, 0x0a, 0x06, 0x4b, 0x77,
6044 0x78, 0x77, 0x9b, 0xf1, 0x03, 0xcc, 0xb5, 0xfe, 0xfb, 0x7a, 0x77, 0xa6,
6045 0x82, 0x9f, 0xe5, 0xde, 0x9d, 0x0d, 0x4d, 0x37, 0xc6, 0x12, 0x73, 0x6d,
6046 0xea, 0xbb, 0x48, 0xf0, 0xd2, 0x81, 0xcc, 0x1a, 0x47, 0xfa, 0xa4, 0xd2,
6047 0xb2, 0x27, 0xa0, 0xfc, 0x30, 0x04, 0xdb, 0x05, 0xd3, 0x0b, 0xbc, 0x4d,
6048 0x7a, 0x99, 0xef, 0x7f, 0x26, 0x01, 0xd4, 0x07, 0x0b, 0x1e, 0x99, 0x06,
6049 0x3c, 0xde, 0x3d, 0x1c, 0x21, 0x82, 0x68, 0x46, 0x35, 0x38, 0x61, 0xea,
6050 0xd4, 0xc2, 0x65, 0x09, 0x39, 0x87, 0xb4, 0xd3, 0x5d, 0x3c, 0xa3, 0x79,
6051 0xe4, 0x01, 0x4e, 0xbf, 0x18, 0xba, 0x57, 0x3f, 0xdd, 0xea, 0x0a, 0x6b,
6052 0x99, 0xfb, 0x93, 0xfa, 0xab, 0xee, 0x08, 0xdf, 0x38, 0x23, 0xae, 0x8d,
6053 0xa8, 0x03, 0x13, 0xfe, 0x83, 0x88, 0xb0, 0xc2, 0xf9, 0x90, 0xa5, 0x1c,
6054 0x01, 0x6f, 0x71, 0x91, 0x42, 0x35, 0x81, 0x74, 0x71, 0x6c, 0xba, 0x86,
6055 0x48, 0xfe, 0x96, 0xd2, 0x88, 0x12, 0x36, 0x4e, 0xa6, 0x2f, 0xd1, 0xdb,
6056 0xfa, 0xbf, 0xdb, 0x84, 0x01, 0xfc, 0x7d, 0x7a, 0xac, 0x20, 0xae, 0xf5,
6057 0x95, 0xc9, 0xdc, 0x10, 0x5f, 0x4c, 0xae, 0x85, 0x01, 0x8b, 0xfe, 0x77,
6058 0x13, 0x01, 0xae, 0x39, 0x59, 0x7e, 0xbc, 0xfd, 0xc9, 0x42, 0xe4, 0x13,
6059 0x07, 0x3f, 0xa9, 0x74, 0xd9, 0xd5, 0xfc, 0xb9, 0x78, 0xbe, 0x97, 0xf5,
6060 0xe7, 0x36, 0x7f, 0xfa, 0x23, 0x30, 0xeb, 0xab, 0x92, 0xd3, 0xdc, 0x3f,
6061 0x7f, 0xc0, 0x77, 0x93, 0xf9, 0x88, 0xe3, 0x4e, 0x13, 0x53, 0x6d, 0x71,
6062 0x87, 0xe9, 0x24, 0x2b, 0xae, 0x26, 0xbf, 0x62, 0x51, 0x04, 0x42, 0xe1,
6063 0x13, 0x9d, 0xd8, 0x9f, 0x59, 0x87, 0x3f, 0xfc, 0x94, 0xff, 0xcf, 0x88,
6064 0x88, 0xe6, 0xeb, 0x6e, 0xc1, 0x96, 0x04, 0x27, 0xc8, 0xda, 0xfa, 0xe8,
6065 0x2e, 0xbb, 0x2c, 0x6e, 0xf4, 0xb4, 0x00, 0x7d, 0x8d, 0x3b, 0xef, 0x8b,
6066 0x18, 0xa9, 0x5f, 0x32, 0xa9, 0xf2, 0x3a, 0x7e, 0x65, 0x2d, 0x6e, 0x8d,
6067 0x75, 0x77, 0xf6, 0xa6, 0xd8, 0xf9, 0x6b, 0x51, 0xe6, 0x66, 0x52, 0x59,
6068 0x39, 0x97, 0x22, 0xda, 0xb2, 0xd6, 0x82, 0x5a, 0x6e, 0x61, 0x60, 0x16,
6069 0x48, 0x7b, 0xf1, 0xc3, 0x4d, 0x7f, 0x50, 0xfa, 0x4d, 0x58, 0x27, 0x30,
6070 0xc8, 0x96, 0xe0, 0x41, 0x4f, 0x6b, 0xeb, 0x88, 0xa2, 0x7a, 0xef, 0x8a,
6071 0x88, 0xc8, 0x50, 0x4b, 0x55, 0x66, 0xee, 0xbf, 0xc4, 0x01, 0x82, 0x4c,
6072 0xec, 0xde, 0x37, 0x64, 0xd6, 0x1e, 0xcf, 0x3e, 0x2e, 0xfe, 0x84, 0x68,
6073 0xbf, 0xa3, 0x68, 0x77, 0xa9, 0x03, 0xe4, 0xf8, 0xd7, 0xb2, 0x6e, 0xa3,
6074 0xc4, 0xc3, 0x36, 0x53, 0xf3, 0xdd, 0x7e, 0x4c, 0xf0, 0xe9, 0xb2, 0x44,
6075 0xe6, 0x60, 0x3d, 0x00, 0x9a, 0x08, 0xc3, 0x21, 0x17, 0x49, 0xda, 0x49,
6076 0xfb, 0x4c, 0x8b, 0xe9, 0x10, 0x66, 0xfe, 0xb7, 0xe0, 0xf9, 0xdd, 0xbf,
6077 0x41, 0xfe, 0x04, 0x9b, 0x7f, 0xe8, 0xd6, 0x2e, 0x4d, 0x0f, 0x7b, 0x10,
6078 0x73, 0x4c, 0xa1, 0x3e, 0x43, 0xb7, 0xcf, 0x94, 0x97, 0x7e, 0x24, 0xbb,
6079 0x87, 0xbf, 0x22, 0xb8, 0x3e, 0xeb, 0x9a, 0x3f, 0xe3, 0x86, 0xee, 0x21,
6080 0xbc, 0xf5, 0x44, 0xeb, 0x60, 0x2e, 0xe7, 0x8f, 0x89, 0xa4, 0x91, 0x61,
6081 0x28, 0x90, 0x85, 0x68, 0xe0, 0xa9, 0x62, 0x93, 0x86, 0x5a, 0x15, 0xbe,
6082 0xb2, 0x76, 0x83, 0xf2, 0x0f, 0x00, 0xc7, 0xb6, 0x57, 0xe9, 0x1f, 0x92,
6083 0x49, 0xfe, 0x50, 0x85, 0xbf, 0x39, 0x3d, 0xe4, 0x8b, 0x72, 0x2d, 0x49,
6084 0xbe, 0x05, 0x0a, 0x34, 0x56, 0x80, 0xc6, 0x1f, 0x46, 0x59, 0xc9, 0xfe,
6085 0x40, 0xfb, 0x78, 0x6d, 0x7a, 0xe5, 0x30, 0xe9, 0x81, 0x55, 0x75, 0x05,
6086 0x63, 0xd2, 0x22, 0xee, 0x2e, 0x6e, 0xb9, 0x18, 0xe5, 0x8a, 0x5a, 0x66,
6087 0xbd, 0x74, 0x30, 0xe3, 0x8b, 0x76, 0x22, 0x18, 0x1e, 0xef, 0x69, 0xe8,
6088 0x9d, 0x07, 0xa7, 0x9a, 0x87, 0x6c, 0x04, 0x4b, 0x74, 0x2b, 0xbe, 0x37,
6089 0x2f, 0x29, 0x9b, 0x60, 0x9d, 0x8b, 0x57, 0x55, 0x34, 0xca, 0x41, 0x25,
6090 0xae, 0x56, 0x92, 0x34, 0x1b, 0x9e, 0xbd, 0xfe, 0x74, 0xbd, 0x4e, 0x29,
6091 0xf0, 0x5e, 0x27, 0x94, 0xb0, 0x9e, 0x23, 0x9f, 0x4a, 0x0f, 0xa1, 0xdf,
6092 0xe7, 0xc4, 0xdb, 0xbe, 0x0f, 0x1a, 0x0b, 0x6c, 0xb0, 0xe1, 0x06, 0x7c,
6093 0x5a, 0x5b, 0x81, 0x1c, 0xb6, 0x12, 0xec, 0x6f, 0x3b, 0xbb, 0x84, 0x36,
6094 0xd5, 0x28, 0x16, 0xea, 0x51, 0xa8, 0x99, 0x24, 0x8f, 0xe7, 0xf8, 0xe9,
6095 0xce, 0xa1, 0x65, 0x96, 0x6f, 0x4e, 0x2f, 0xb7, 0x6f, 0x65, 0x39, 0xad,
6096 0xfd, 0x2e, 0xa0, 0x37, 0x32, 0x2f, 0xf3, 0x95, 0xa1, 0x3a, 0xa1, 0x9d,
6097 0x2c, 0x9e, 0xa1, 0x4b, 0x7e, 0xc9, 0x7e, 0x86, 0xaa, 0x16, 0x00, 0x82,
6098 0x1d, 0x36, 0xbf, 0x98, 0x0a, 0x82, 0x5b, 0xcc, 0xc4, 0x6a, 0xad, 0xa0,
6099 0x1f, 0x47, 0x98, 0xde, 0x8d, 0x68, 0x38, 0x3f, 0x33, 0xe2, 0x08, 0x3b,
6100 0x2a, 0x65, 0xd9, 0x2f, 0x53, 0x68, 0xb8, 0x78, 0xd0, 0x1d, 0xbb, 0x2a,
6101 0x73, 0x19, 0xba, 0x58, 0xea, 0xf1, 0x0a, 0xaa, 0xa6, 0xbe, 0x27, 0xd6,
6102 0x00, 0x6b, 0x4e, 0x43, 0x8e, 0x5b, 0x19, 0xc1, 0x37, 0x0f, 0xfb, 0x81,
6103 0x72, 0x10, 0xb6, 0x20, 0x32, 0xcd, 0xa2, 0x7c, 0x90, 0xd4, 0xf5, 0xcf,
6104 0x1c, 0xcb, 0x14, 0x24, 0x7a, 0x4d, 0xf5, 0xd5, 0xd9, 0xce, 0x6a, 0x64,
6105 0xc9, 0xd3, 0xa7, 0x36, 0x6f, 0x1d, 0xf1, 0xe9, 0x71, 0x6c, 0x3d, 0x02,
6106 0xa4, 0x62, 0xb1, 0x82, 0x5c, 0x13, 0x4b, 0x6b, 0x68, 0xe2, 0x31, 0xef,
6107 0xe4, 0x46, 0xfd, 0xe5, 0xa8, 0x29, 0xe9, 0x1e, 0xad, 0xff, 0x33, 0xdb,
6108 0x0b, 0xc0, 0x92, 0xb1, 0xef, 0xeb, 0xb3, 0x6f, 0x96, 0x7b, 0xdf, 0xcd,
6109 0x07, 0x19, 0x86, 0x60, 0x98, 0xcf, 0x95, 0xfe, 0x98, 0xdd, 0x29, 0xa6,
6110 0x35, 0x7b, 0x46, 0x13, 0x03, 0xa8, 0xd9, 0x7c, 0xb3, 0xdf, 0x9f, 0x14,
6111 0xb7, 0x34, 0x5a, 0xc4, 0x12, 0x81, 0xc5, 0x98, 0x25, 0x8d, 0x3e, 0xe3,
6112 0xd8, 0x2d, 0xe4, 0x54, 0xab, 0xb0, 0x13, 0xfd, 0xd1, 0x3f, 0x3b, 0xbf,
6113 0xa9, 0x45, 0x28, 0x8a, 0x2f, 0x9c, 0x1e, 0x2d, 0xe5, 0xab, 0x13, 0x95,
6114 0x97, 0xc3, 0x34, 0x37, 0x8d, 0x93, 0x66, 0x31, 0x81, 0xa0, 0x30, 0x23,
6115 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x15, 0x31,
6116 0x16, 0x04, 0x14, 0xa5, 0x23, 0x9b, 0x7e, 0xe6, 0x45, 0x71, 0xbf, 0x48,
6117 0xc6, 0x27, 0x3c, 0x96, 0x87, 0x63, 0xbd, 0x1f, 0xde, 0x72, 0x12, 0x30,
6118 0x79, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x11, 0x01,
6119 0x31, 0x6c, 0x1e, 0x6a, 0x00, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72,
6120 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20,
6121 0x00, 0x45, 0x00, 0x6e, 0x00, 0x68, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63,
6122 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x52, 0x00, 0x53, 0x00, 0x41,
6123 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x41,
6124 0x00, 0x45, 0x00, 0x53, 0x00, 0x20, 0x00, 0x43, 0x00, 0x72, 0x00, 0x79,
6125 0x00, 0x70, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x67, 0x00, 0x72, 0x00, 0x61,
6126 0x00, 0x70, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x50,
6127 0x00, 0x72, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x69, 0x00, 0x64, 0x00, 0x65,
6128 0x00, 0x72, 0x30, 0x31, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e,
6129 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0x93, 0xa8, 0xb2, 0x7e, 0xb7,
6130 0xab, 0xf1, 0x1c, 0x3c, 0x36, 0x58, 0xdc, 0x67, 0x6d, 0x42, 0xa6, 0xfc,
6131 0x53, 0x01, 0xe6, 0x04, 0x08, 0x77, 0x57, 0x22, 0xa1, 0x7d, 0xb9, 0xa2,
6132 0x69, 0x02, 0x02, 0x08, 0x00
6155 if (!
ret)
goto done;
6159 ok( !
ret,
"unexpected success\n" );
6179 ok( !
ret,
"unexpected success\n" );
6259 pWinHttpWebSocketCompleteUpgrade = (
void *)
GetProcAddress(
mod,
"WinHttpWebSocketCompleteUpgrade");
6260 pWinHttpWebSocketQueryCloseStatus = (
void *)
GetProcAddress(
mod,
"WinHttpWebSocketQueryCloseStatus");
6262 pWinHttpWebSocketShutdown = (
void *)
GetProcAddress(
mod,
"WinHttpWebSocketShutdown");
6263 pWinHttpWebSocketReceive = (
void *)
GetProcAddress(
mod,
"WinHttpWebSocketReceive");
6315 skip(
"Skipping tests due to hang. See ROSTESTS-350\n");
std::map< E_MODULE, HMODULE > mod
ULONG WSAAPI inet_addr(IN CONST CHAR FAR *cp)
static struct sockaddr_in sa
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
void dispatch(HANDLE hStopEvent)
struct protocol * protocols
#define RegCloseKey(hKey)
static const WCHAR proxy_server[]
HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags)
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash)
BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash)
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
BOOL WINAPI CryptHashData(HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
BOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv, LPCWSTR pszContainer, LPCWSTR pszProvider, DWORD dwProvType, DWORD dwFlags)
HRESULT WINAPI DECLSPEC_HOTPATCH CLSIDFromProgID(LPCOLESTR progid, CLSID *clsid)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
static const WCHAR empty[1]
BOOL WINAPI CryptBinaryToStringA(const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFlags, DWORD dwType, const void *pvPara, PCCERT_CONTEXT pPrevCertContext)
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
static const WCHAR version[]
static void cleanup(void)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP char *__cdecl strstr(const char *, const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
HINTERNET WINAPI WinHttpOpenRequest(HINTERNET hconnect, const WCHAR *verb, const WCHAR *object, const WCHAR *version, const WCHAR *referrer, const WCHAR **types, DWORD flags)
BOOL WINAPI WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *info)
BOOL WINAPI WinHttpQueryOption(HINTERNET handle, DWORD option, void *buffer, DWORD *buflen)
HINTERNET WINAPI WinHttpOpen(LPCWSTR agent, DWORD access, LPCWSTR proxy, LPCWSTR bypass, DWORD flags)
BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *config)
HINTERNET WINAPI WinHttpConnect(HINTERNET hsession, const WCHAR *server, INTERNET_PORT port, DWORD reserved)
BOOL WINAPI WinHttpSetOption(HINTERNET handle, DWORD option, void *buffer, DWORD buflen)
BOOL WINAPI WinHttpGetProxyForUrl(HINTERNET hsession, LPCWSTR url, WINHTTP_AUTOPROXY_OPTIONS *options, WINHTTP_PROXY_INFO *info)
BOOL WINAPI WinHttpTimeFromSystemTime(const SYSTEMTIME *time, LPWSTR string)
BOOL WINAPI WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *info)
BOOL WINAPI WinHttpCloseHandle(HINTERNET handle)
BOOL WINAPI WinHttpSetTimeouts(HINTERNET handle, int resolve, int connect, int send, int receive)
BOOL WINAPI WinHttpDetectAutoProxyConfigUrl(DWORD flags, WCHAR **url)
BOOL WINAPI WinHttpTimeToSystemTime(LPCWSTR string, SYSTEMTIME *time)
WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(HINTERNET handle, WINHTTP_STATUS_CALLBACK callback, DWORD flags, DWORD_PTR reserved)
INT WSAAPI recv(IN SOCKET s, OUT CHAR FAR *buf, IN INT len, IN INT flags)
INT WSAAPI send(IN SOCKET s, IN CONST CHAR FAR *buf, IN INT len, IN INT flags)
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLint GLboolean GLint GLenum access
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static const WCHAR optionW[]
#define DISPID_HTTPREQUEST_SETAUTOLOGONPOLICY
#define DISPID_HTTPREQUEST_OPEN
#define DISPID_HTTPREQUEST_OPTION
#define memcpy(s1, s2, n)
static VARIANTARG static DISPID
INTERNETFEATURELIST feature
static const CHAR post_data[]
static BOOL test_redirect
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
static BOOL check_buffer(parse_buffer *buf, ULONG size)
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualIID(riid1, riid2)
BOOL WINAPI WinHttpQueryHeaders(HINTERNET hrequest, DWORD level, const WCHAR *name, void *buffer, DWORD *buflen, DWORD *index)
BOOL WINAPI WinHttpAddRequestHeaders(HINTERNET hrequest, const WCHAR *headers, DWORD len, DWORD flags)
BOOL WINAPI WinHttpQueryDataAvailable(HINTERNET hrequest, LPDWORD available)
BOOL WINAPI WinHttpWriteData(HINTERNET hrequest, const void *buffer, DWORD to_write, DWORD *written)
BOOL WINAPI WinHttpReadData(HINTERNET hrequest, void *buffer, DWORD to_read, DWORD *read)
BOOL WINAPI WinHttpSetCredentials(HINTERNET hrequest, DWORD target, DWORD scheme, const WCHAR *username, const WCHAR *password, void *params)
BOOL WINAPI WinHttpSendRequest(HINTERNET hrequest, const WCHAR *headers, DWORD headers_len, void *optional, DWORD optional_len, DWORD total_len, DWORD_PTR context)
BOOL WINAPI WinHttpReceiveResponse(HINTERNET hrequest, LPVOID reserved)
BOOL WINAPI WinHttpQueryAuthSchemes(HINTERNET hrequest, LPDWORD supported, LPDWORD first, LPDWORD target)
static __inline const char * wine_dbgstr_guid(const GUID *id)
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
vector< Header * > headers
INT WSAAPI setsockopt(IN SOCKET s, IN INT level, IN INT optname, IN CONST CHAR FAR *optval, IN INT optlen)
INT WSAAPI listen(IN SOCKET s, IN INT backlog)
INT WSAAPI shutdown(IN SOCKET s, IN INT how)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
SOCKET WSAAPI accept(IN SOCKET s, OUT LPSOCKADDR addr, OUT INT FAR *addrlen)
wchar_t const *const size_t const buffer_size
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
static void reverse(int *pidx, int cch)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
DWORD WINAPI GetLastError(void)
#define CRYPT_VERIFYCONTEXT
#define CRYPT_USER_KEYSET
#define CRYPT_STRING_BASE64
#define X509_ASN_ENCODING
#define PKCS12_NO_PERSIST_KEY
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define DISP_E_PARAMNOTFOUND
#define ERROR_INVALID_OPERATION
#define DISP_E_UNKNOWNINTERFACE
#define DISP_E_MEMBERNOTFOUND
#define SEC_E_ILLEGAL_MESSAGE
#define SEC_E_CERT_EXPIRED
#define DISP_E_TYPEMISMATCH
static void test_WinHttpSendRequest(void)
static const WCHAR WinHttpSettings[]
static const char auth_unseen[]
static void test_WinHttpDetectAutoProxyConfigUrl(void)
static const BYTE pfxdata[]
static void test_bad_header(int port)
static const char badreplyheadermsg[]
static void test_IWinHttpRequest(int port)
static DWORD CALLBACK server_thread(LPVOID param)
static const char okmsg[]
static void test_multiple_reads(int port)
static void test_websocket(int port)
static void test_no_content(int port)
static void test_no_headers(int port)
static void set_proxy(REGSAM access, BYTE *buf, DWORD len, DWORD type)
static void test_credentials(void)
static void test_cookies(int port)
static void CALLBACK cert_error(HINTERNET handle, DWORD_PTR ctx, DWORD status, LPVOID buf, DWORD len)
static void do_request(HINTERNET con, const WCHAR *obj, DWORD flags)
static void test_chunked_request(int port)
static void test_set_default_proxy_config(void)
static void test_WinHttpOpenRequest(void)
static const char noauthmsg[]
static void test_resolve_timeout(void)
static const char hello_world[]
static void test_secure_connection(void)
static const char notokmsg[]
static const char proxy_pac[]
static void test_connect_error(void)
static const char page1[]
static void test_WinHttpGetIEProxyConfigForCurrentUser(void)
static void test_WinHttpAddHeaders(void)
static void test_WinHttpGetProxyForUrl(int port)
static void test_basic_authentication(int port)
static void test_basic_request(int port, const WCHAR *verb, const WCHAR *path)
static void test_request_parameter_defaults(void)
static const char cookiemsg2[]
static const char headmsg[]
static void test_multi_authentication(int port)
static void test_IWinHttpRequest_Invoke(void)
static void test_empty_headers_param(void)
static USHORT void DWORD *static void DWORD WINHTTP_WEB_SOCKET_BUFFER_TYPE *static WINHTTP_WEB_SOCKET_BUFFER_TYPE
static void create_websocket_accept(const char *key, char *buf, unsigned int buflen)
static const char unauthorized[]
static const char nocontentmsg[]
static void test_WinHttpTimeToSystemTime(void)
static void test_client_cert_authentication(void)
static void test_max_http_automatic_redirects(void)
static void test_head_request(int port)
static const char passportauth[]
static int server_receive_request(int c, char *buffer, size_t buffer_size)
static void test_not_modified(int port)
static const char largeauth[]
static const WCHAR Connections[]
static DWORD get_default_proxy_reg_value(BYTE *buf, DWORD len, DWORD *type)
static const char cookiemsg[]
static void test_WinHttpQueryOption(void)
static void test_connection_info(int port)
static void test_request_path_escapes(int port)
static const char redirectmsg[]
static void test_passport_auth(int port)
static void test_chunked_read(void)
static void set_default_proxy_reg_value(BYTE *buf, DWORD len, DWORD type)
static void test_connection_cache(int port)
static void test_WinHttpTimeFromSystemTime(void)
static void test_large_data_authentication(int port)
static const char okauthmsg[]
static const char switchprotocols[]
static BOOL proxy_active(void)
static const char okmsg_length0[]
static const char notmodified[]
static void request_get_property(IWinHttpRequest *request, int property, VARIANT *ret)
static const char multiauth[]
static void test_timeouts(void)
#define WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE
#define WINHTTP_OPTION_PROXY_PASSWORD
#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED
#define WINHTTP_OPTION_USERNAME
#define WINHTTP_QUERY_CONTENT_LENGTH
#define WINHTTP_AUTOPROXY_NO_CACHE_SVC
#define WINHTTP_AUTO_DETECT_TYPE_DHCP
#define WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH
#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN
#define WINHTTP_OPTION_CONTEXT_VALUE
#define WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS
#define WINHTTP_FLAG_ESCAPE_DISABLE_QUERY
#define ERROR_WINHTTP_NAME_NOT_RESOLVED
#define SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE
#define WINHTTP_OPTION_SEND_TIMEOUT
#define WINHTTP_QUERY_CONNECTION
@ WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS
#define WINHTTP_QUERY_VERSION
#define WINHTTP_OPTION_CONNECTION_INFO
#define HTTP_STATUS_NO_CONTENT
#define ERROR_WINHTTP_OPERATION_CANCELLED
#define WINHTTP_HEADER_NAME_BY_INDEX
#define WINHTTP_OPTION_SERVER_CERT_CONTEXT
#define HTTP_STATUS_BAD_REQUEST
#define WINHTTP_OPTION_SECURITY_FLAGS
#define WINHTTP_DEFAULT_ACCEPT_TYPES
#define ERROR_WINHTTP_CANNOT_CONNECT
#define WINHTTP_FLAG_BYPASS_PROXY_CACHE
#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID
#define WINHTTP_AUTH_SCHEME_BASIC
#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE
#define WINHTTP_AUTH_SCHEME_PASSPORT
#define WINHTTP_OPTION_PROXY_USERNAME
#define WINHTTP_OPTION_ENABLE_FEATURE
#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED
#define WINHTTP_OPTION_PASSWORD
#define WINHTTP_OPTION_URL
#define WINHTTP_NO_REQUEST_DATA
#define WINHTTP_NO_ADDITIONAL_HEADERS
#define WINHTTP_OPTION_RESOLVE_TIMEOUT
#define WINHTTP_QUERY_UPGRADE
#define WINHTTP_OPTION_DISABLE_FEATURE
#define WINHTTP_OPTION_CLIENT_CERT_CONTEXT
#define WINHTTP_ADDREQ_FLAG_ADD_IF_NEW
#define WINHTTP_ENABLE_SSL_REVOCATION
#define WINHTTP_DISABLE_KEEP_ALIVE
#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA
#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON
#define WINHTTP_AUTOPROXY_AUTO_DETECT
#define WINHTTP_QUERY_STATUS_CODE
#define WINHTTP_QUERY_FLAG_REQUEST_HEADERS
#define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
#define WINHTTP_ENABLE_PASSPORT_AUTH
#define WINHTTP_ACCESS_TYPE_NAMED_PROXY
#define HTTP_STATUS_SWITCH_PROTOCOLS
#define ERROR_WINHTTP_SECURE_FAILURE
#define WINHTTP_NO_PROXY_NAME
#define WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP
#define WINHTTP_AUTH_SCHEME_NEGOTIATE
#define WINHTTP_AUTH_TARGET_SERVER
#define WINHTTP_NO_HEADER_INDEX
#define WINHTTP_QUERY_ORIG_URI
#define ERROR_WINHTTP_INCORRECT_HANDLE_STATE
#define ERROR_WINHTTP_INVALID_OPTION
#define WINHTTP_ADDREQ_FLAG_ADD
#define WINHTTP_OPTION_CONNECT_RETRIES
#define WINHTTP_AUTH_SCHEME_DIGEST
#define WINHTTP_QUERY_FLAG_NUMBER
#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND
#define WINHTTP_AUTO_DETECT_TYPE_DNS_A
#define WINHTTP_OPTION_CONNECT_TIMEOUT
#define WINHTTP_QUERY_MAX
@ WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE
#define WINHTTP_OPTION_RECEIVE_TIMEOUT
#define WINHTTP_QUERY_CUSTOM
#define ERROR_WINHTTP_AUTODETECTION_FAILED
#define ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
#define SECURITY_FLAG_SECURE
#define ERROR_WINHTTP_UNRECOGNIZED_SCHEME
#define WINHTTP_ACCESS_TYPE_NO_PROXY
#define WINHTTP_AUTOPROXY_HOST_KEEPCASE
#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED
#define WINHTTP_QUERY_STATUS_TEXT
#define ERROR_WINHTTP_CONNECTION_ERROR
#define WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT
#define WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT
#define WINHTTP_FLAG_ESCAPE_PERCENT
enum _WINHTTP_WEB_SOCKET_BUFFER_TYPE WINHTTP_WEB_SOCKET_BUFFER_TYPE
#define WINHTTP_NO_CLIENT_CERT_CONTEXT
#define WINHTTP_AUTOPROXY_HOST_LOWERCASE
#define WINHTTP_FLAG_ESCAPE_DISABLE
#define HTTP_STATUS_DENIED
#define HTTP_STATUS_CONTINUE
#define ERROR_WINHTTP_LOGIN_FAILURE
#define WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL
#define WINHTTP_ADDREQ_FLAG_REPLACE
#define ERROR_WINHTTP_HEADER_NOT_FOUND
#define ERROR_WINHTTP_TIMEOUT
#define WINHTTP_QUERY_TRANSFER_ENCODING
#define HTTP_STATUS_NOT_MODIFIED
#define WINHTTP_QUERY_RAW_HEADERS_CRLF
#define WINHTTP_FLAG_SECURE
#define WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT
#define WINHTTP_ADDREQ_FLAG_COALESCE
#define ERROR_WINHTTP_SHUTDOWN
#define INTERNET_DEFAULT_HTTP_PORT
#define WINHTTP_QUERY_REQUEST_METHOD
#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND
#define WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE
#define WINHTTP_OPTION_REDIRECT_POLICY
#define WINHTTP_OPTION_SECURITY_KEY_BITNESS
#define WINHTTP_OPTION_SECURE_PROTOCOLS
#define WINHTTP_NO_REFERER
#define WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2
#define WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET
#define SECURITY_FLAG_STRENGTH_STRONG
#define WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS
#define WINHTTP_NO_PROXY_BYPASS
#define WINHTTP_AUTH_SCHEME_NTLM
#define SECURITY_FLAG_IGNORE_UNKNOWN_CA
#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
#define ERROR_WINHTTP_SECURE_CHANNEL_ERROR
#define WINHTTP_DISABLE_COOKIES
#define WINHTTP_CALLBACK_STATUS_SECURE_FAILURE
#define WINHTTP_AUTOPROXY_CONFIG_URL
#define WINHTTP_QUERY_RAW_HEADERS
#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID
#define ERROR_WINHTTP_REDIRECT_FAILED
#define WINHTTP_TIME_FORMAT_BUFSIZE
#define WINHTTP_OPTION_WORKER_THREAD_COUNT
#define HKEY_LOCAL_MACHINE