32#include "httprequest.h"
48#define DEFAULT_KEEP_ALIVE_TIMEOUT 30000
50#define ACTUAL_DEFAULT_RECEIVE_RESPONSE_TIMEOUT 21000
62 L"Content-Transfer-Encoding",
101 L"Proxy-Authenticate",
119 L"If-Unmodified-Since",
121 L"Proxy-Authorization",
123 L"Transfer-Encoding",
130 L"Unless-Modified-Since",
212 TRACE(
"queueing %p in %p\n", task_hdr,
queue);
233 ERR(
"Submiting threadpool callback failed, err %lu.\n",
GetLastError() );
291 if (
c < 32 ||
c == 127)
return FALSE;
298 case '\\':
case '\"':
325 while (name_end !=
string)
327 if (name_end[-1] !=
' ')
break;
331 if (name_end ==
string)
336 while (
p != name_end)
356 while (*
q ==
' ')
q++;
357 len = (
string + string_len) -
q;
382 if (!requested_index)
break;
447 hdr.is_request = request_only;
457 int len, len_orig, len_value;
463 len = len_orig + len_value + 2;
477 hdr.is_request = request_only;
504 while (*
q ==
'\r' || *
q ==
'\n')
622#define QUERY_MODIFIER_MASK (WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_FLAG_SYSTEMTIME | WINHTTP_QUERY_FLAG_NUMBER)
629 int requested_index, header_index = -1;
653 for (
len = 0; *
p;
p++)
if (*
p !=
'\r')
len++;
660 if (*
p !=
'\r') *
q = *
p;
753 FIXME(
"attribute %lu not implemented\n",
attr );
761 if (header_index >= 0)
776 *buflen =
sizeof(
DWORD);
784 TRACE(
"returning time: %04d/%02d/%02d - %d - %02d:%02d:%02d.%02d\n",
820 TRACE(
"%p, %#lx, %s, %p, %p, %p\n", hrequest,
level,
debugstr_w(
name),
buffer, buflen,
index );
885 DWORD ret,
index = 0, supported_schemes = 0, first_scheme = 0;
910 if (!first_scheme) first_scheme =
scheme;
911 supported_schemes |=
scheme;
916 *supported = supported_schemes;
917 *
first = first_scheme;
969 static const char base64enc[] =
970 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
975 base64[
n++] = base64enc[(
bin[0] & 0xfc) >> 2];
976 x = (
bin[0] & 3) << 4;
981 base64[
n++] = base64enc[
x];
986 base64[
n++] = base64enc[
x | ((
bin[1] & 0xf0) >> 4)];
987 x = (
bin[1] & 0x0f) << 2;
992 base64[
n++] = base64enc[
x];
996 base64[
n++] = base64enc[
x | ((
bin[2] & 0xc0) >> 6)];
999 base64[
n++] = base64enc[
bin[2] & 0x3f];
1009 if (
c >=
'A' &&
c <=
'Z')
return c -
'A';
1010 if (
c >=
'a' &&
c <=
'z')
return c -
'a' + 26;
1011 if (
c >=
'0' &&
c <=
'9')
return c -
'0' + 52;
1012 if (
c ==
'+')
return 62;
1013 if (
c ==
'/')
return 63;
1020 char c0, c1, c2, c3;
1032 buf[
i + 0] = (c0 << 2) | (c1 >> 4);
1033 buf[
i + 1] = (c1 << 4) | (c2 >> 2);
1034 buf[
i + 2] = (c2 << 6) | c3;
1045 if (
buf)
buf[
i] = (c0 << 2) | (c1 >> 4);
1048 else if (
p[3] ==
'=')
1056 buf[
i + 0] = (c0 << 2) | (c1 >> 4);
1057 buf[
i + 1] = (c1 << 4) | (c2 >> 2);
1070 buf[
i + 0] = (c0 << 2) | (c1 >> 4);
1071 buf[
i + 1] = (c1 << 4) | (c2 >> 2);
1072 buf[
i + 2] = (c2 << 6) | c3;
1127 WCHAR auth_value[2048], *auth_reply;
1147 if (!has_auth_value)
return FALSE;
1180 int userlen, passlen;
1250 WARN(
"AcquireCredentialsHandleW for scheme %s failed with error %#lx\n",
1262 ERR(
"authentication scheme changed from %s to %s\n",
1274 in_desc.pBuffers = &
in;
1281 if (!(
in.pvBuffer =
malloc(
in.cbBuffer ))) {
1299 out_desc.pBuffers = &
out;
1312 TRACE(
"sending last auth packet\n");
1319 TRACE(
"sending next auth packet\n");
1323 ERR(
"InitializeSecurityContextW failed with error %#lx\n",
status );
1342 auth_reply[len_scheme] =
' ';
1401 int len, bytes_sent;
1422 switch (
addr->ss_family)
1431 WARN(
"unsupported address family %d\n",
addr->ss_family);
1443 0, 0, { (
DWORD_PTR)(__FILE__
": connection_pool_cs") }
1467 unsigned int remaining_connections;
1476 remaining_connections = 0;
1491 else remaining_connections++;
1498 }
while(remaining_connections);
1545 memset( &cred, 0,
sizeof(cred) );
1561 WARN(
"AcquireCredentialsHandleW failed: %#lx\n",
status );
1630 TRACE(
"connection %p no longer alive, closing\n",
netconn);
1852 if (!eol)
return FALSE;
1857 if (*
p ==
';' || *
p ==
'\r')
break;
1886 if (
ch ==
';' ||
ch ==
'\r' ||
ch ==
'\n')
1888 TRACE(
"reading %lu byte chunk\n", chunk_size );
1939 WCHAR connection[20];
1953 size =
sizeof(connection);
1954 close_request_headers =
1957 && !
wcsicmp( connection,
L"close" );
1958 if (
close || close_request_headers)
1991 int count, bytes_read = 0;
2011 bytes_read +=
count;
2046 else size =
min(
sizeof(
buffer), bytes_left - bytes_total );
2049 bytes_total += bytes_read;
2064#define ESCAPE_MASK_DEFAULT (ESCAPE_FLAG_NON_PRINTABLE | ESCAPE_FLAG_SPACE | ESCAPE_FLAG_UNSAFE |\
2065 ESCAPE_FLAG_DEL | ESCAPE_FLAG_8BIT)
2066#define ESCAPE_MASK_PERCENT (ESCAPE_FLAG_PERCENT | ESCAPE_MASK_DEFAULT)
2067#define ESCAPE_MASK_DISABLE (ESCAPE_FLAG_SPACE | ESCAPE_FLAG_8BIT | ESCAPE_FLAG_STRIP_CRLF)
2071 static const char unsafe[] =
"\"#<>[\\]^`{|}";
2072 const char *
ptr = unsafe;
2085 static const char hex[] =
"0123456789ABCDEF";
2089 for (
i = 0;
i <
len;
i++)
2134 DWORD len, len_path = 0, len_query = 0;
2148 len_path -= len_query;
2157 else query_flags = path_flags;
2182 *
len += len_path + 1;
2216 memcpy(
ptr,
"\r\n\r\n",
sizeof(
"\r\n\r\n") );
2227 DWORD base64_len = ((
sizeof(
buf) + 2) * 4) / 3;
2279 buflen =
sizeof(encoding);
2309 TRACE(
"failed to add request headers: %lu\n",
ret );
2314 WARN(
"failed to add cookie headers: %lu\n",
ret );
2340 len += optional_len;
2403 TRACE(
"%p, %s, %lu, %p, %lu, %lu, %Ix\n", hrequest,
debugstr_wn(
headers, headers_len), headers_len,
optional,
2499 TRACE(
"%p, %lu, %#lx, %s, %p, %p\n", hrequest,
target,
scheme,
debugstr_w(
username),
password,
params );
2537 ERR(
"unhandled status %lu\n",
status );
2570 buflen =
sizeof(encoding);
2594 bytes_read =
count + 1;
2608 TRACE(
"returning empty string\n");
2622#define MAX_REPLY_LEN 1460
2623#define INITIAL_HEADER_BUFFER_LEN 512
2631 WCHAR status_codeW[4];
2647 TRACE(
"version [%s] status code [%s] status text [%s]\n",
2656 status_codeW[
len] = 0;
2683 offset = buflen + crlf_len - 1;
2691 if (!*
buffer) buflen = 1;
2693 while (
len -
offset < buflen + crlf_len)
2784 memset( &uc, 0,
sizeof(uc) );
2824 TRACE(
"redirect from secure page to non-secure page\n");
2829 TRACE(
"redirect from non-secure page to secure page\n");
2893 static const WCHAR passportW[] = {
'P',
'a',
's',
's',
'p',
'o',
'r',
't',
'1',
'.',
'4'};
2914 for (
i = 0;
i <
len;
i++)
2916 if (
i <=
len - 3 &&
p[
i] ==
'3' &&
p[
i + 1] ==
'0' &&
p[
i + 2] ==
'2')
2949 TRACE(
"Sending request.\n" );
3109 return request->
hdr.recursion_count < 3 && *wont_block;
3181 else if (wont_block)
3197 s->info = &
s->count;
3198 s->buflen =
sizeof(
s->count);
3203 s->result.dwError =
ret;
3205 s->info = &
s->result;
3206 s->buflen =
sizeof(
s->result);
3277 else if (wont_block)
3294 s->buflen =
s->count;
3299 s->result.dwError =
ret;
3301 s->info = &
s->result;
3302 s->buflen =
sizeof(
s->result);
3353 if (!
ret && written) *written = num_bytes;
3376 TRACE(
"%p, %p, %lu, %p\n", hrequest,
buffer, to_write, written );
3467 WARN(
"Invalid parameters for WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL.\n" );
3474 TRACE(
"WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL %lu.\n",
interval);
3529 ERR(
"No memory.\n" );
3553 TRACE(
"returning %p\n", hsocket);
3568#define FIN_BIT (1 << 7)
3569#define MASK_BIT (1 << 7)
3570#define RESERVED_BIT (7 << 4)
3571#define CONTROL_BIT (1 << 3)
3581 TRACE(
"sending %02x frame, len %lu\n", opcode,
len );
3589 else if (
len < 65536)
3601 hdr[7] = (
len >> 16) & 0xff;
3602 hdr[8] = (
len >> 8) & 0xff;
3645 for (
i = 0;
i <
len; ++
i)
3689 for (
i = 0;
i <
len; ++
i)
3726 switch (current_fragment)
3784 FIXME(
"buffer type %u not supported\n",
type);
3859 BOOL async_send, complete_async =
FALSE;
3864 WARN(
"Previous send is still queued.\n" );
3887 memset( &
s->ovr, 0,
sizeof(
s->ovr) );
3906 if (!async_send ||
ret)
3914 TRACE(
"sent sync.\n");
3957 if (!read_full_buffer)
break;
3978 FIXME(
"opcode %02x not handled\n", opcode );
3993 *opcode =
hdr[0] & 0xf;
3995 TRACE(
"received %02x frame, final %#x\n", *opcode, *
final);
3997 len =
hdr[1] & ~MASK_BIT;
4004 else if (
len == 127)
4035 BOOL async_send, complete_async =
FALSE;
4045 memset( &
s->ovr, 0,
sizeof(
s->ovr) );
4120 WARN(
"SOCKET_OPCODE_CLOSE received, socket->state %u.\n",
socket->
state );
4123 FIXME(
"Close frame already received.\n" );
4147 FIXME(
"Received SOCKET_OPCODE_TEXT with prev fragment %u.\n", frag_type );
4158 FIXME(
"Received SOCKET_OPCODE_BINARY with prev fragment %u.\n", frag_type );
4170 FIXME(
"Received SOCKET_OPCODE_CONTINUE without starting fragment.\n" );
4186 FIXME(
"opcode %02x not handled\n", opcode);
4217 if (count < socket->read_size)
4218 WARN(
"Short read.\n");
4223 TRACE(
"len %lu, *ret_len %lu, *ret_type %u.\n",
len, *
ret_len, *ret_type );
4224 if (*ret_type == ~0
u)
4246 result.AsyncResult.dwResult = 0;
4302 WARN(
"Attempt to queue receive while another is pending.\n" );
4367 BOOL async_send, complete_async =
FALSE;
4376 memset( &
s->ovr, 0,
sizeof(
s->ovr) );
4459 FIXME(
"Received close opcode without FIN bit.\n" );
4500 LONG pending_receives = 0;
4543 if (!(
s =
calloc( 1,
sizeof(*
s) )))
4644 IWinHttpRequest *iface )
4685 IWinHttpRequest *iface )
4697 request->cs.DebugInfo->Spare[0] = 0;
4705 IWinHttpRequest *iface,
4724 IWinHttpRequest_AddRef( iface );
4729 IWinHttpRequest *iface,
4750 &IID_IWinHttpRequest
4764 ERR(
"LoadRegTypeLib failed: %#lx\n",
hr );
4801 IWinHttpRequest *iface,
4813 IWinHttpRequest *iface,
4824 TRACE(
"%p, %s, %p, %u, %lu, %p\n",
request,
debugstr_guid(
riid),
names,
count,
lcid, dispid );
4838 IWinHttpRequest *iface,
4845 EXCEPINFO *excep_info,
4852 TRACE(
"%p, %ld, %s, %lu, %d, %p, %p, %p, %p\n",
request,
member,
debugstr_guid(
riid),
4863 if (!arg_err) arg_err = &err_pos;
4908 IWinHttpRequest *iface,
4909 HTTPREQUEST_PROXY_SETTING proxy_setting,
4920 switch (proxy_setting)
4922 case HTTPREQUEST_PROXYSETTING_DEFAULT:
4930 case HTTPREQUEST_PROXYSETTING_DIRECT:
4938 case HTTPREQUEST_PROXYSETTING_PROXY:
4961 IWinHttpRequest *iface,
4964 HTTPREQUEST_SETCREDENTIALS_FLAGS
flags )
4980 case HTTPREQUEST_SETCREDENTIALS_FOR_SERVER:
4983 case HTTPREQUEST_SETCREDENTIALS_FOR_PROXY:
5043 IWinHttpRequest *iface,
5048 static const WCHAR httpsW[] = {
'h',
't',
't',
'p',
's'};
5049 static const WCHAR *acceptW[] = {
L"*/*",
NULL};
5050 static const WCHAR user_agentW[] =
L"Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)";
5061 memset( &uc, 0,
sizeof(uc) );
5136 IWinHttpRequest *iface,
5180 IWinHttpRequest *iface,
5223 IWinHttpRequest *iface,
5342 if (!
request->bytes_available)
break;
5347 while (buflen <
size) buflen *= 2;
5364 }
while (
request->bytes_read);
5428 for (
i = 0;
i <
len;
i++)
5512 IWinHttpRequest *iface,
5552 IWinHttpRequest *iface,
5582 IWinHttpRequest *iface,
5638 while (*
p ==
' ')
p++;
5641 while (*
p ==
' ')
p++;
5651 IWinHttpRequest *iface,
5685 IWinHttpRequest *iface,
5758 IStream_AddRef( iface );
5809 if (
origin == STREAM_SEEK_SET)
5811 else if (
origin == STREAM_SEEK_CUR)
5813 else if (
origin == STREAM_SEEK_END)
5888 IWinHttpRequest *iface,
5930 IWinHttpRequest *iface,
5931 WinHttpRequestOption
option,
5942 case WinHttpRequestOption_URLCodePage:
5946 case WinHttpRequestOption_SslErrorIgnoreFlags:
5962 IWinHttpRequest *iface,
5963 WinHttpRequestOption
option,
5974 case WinHttpRequestOption_EnableRedirects:
5977 request->disable_feature &= ~WINHTTP_DISABLE_REDIRECTS;
5982 case WinHttpRequestOption_URLCodePage:
5994 TRACE(
"URL codepage: UTF-8\n");
6002 case WinHttpRequestOption_SslErrorIgnoreFlags:
6026 IWinHttpRequest *iface,
6044 if (succeeded) *succeeded = VARIANT_FALSE;
6049 if (succeeded) *succeeded = VARIANT_TRUE;
6057 IWinHttpRequest *iface )
6070 IWinHttpRequest *iface,
6090 IWinHttpRequest *iface,
6098 IWinHttpRequest *iface,
6099 WinHttpRequestAutoLogonPolicy
policy )
6109 case AutoLogonPolicy_Always:
6112 case AutoLogonPolicy_OnlyIfBypassProxy:
6115 case AutoLogonPolicy_Never:
6165 request->cs.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": winhttp_request.cs");
6169 TRACE(
"returning iface %p\n", *
obj);
static unsigned char bytes[4]
static struct sockaddr_in sa
#define SOCKET_STATE_CLOSED
WINBASEAPI _Check_return_ _Out_ AppPolicyProcessTerminationMethod * policy
#define InterlockedIncrement
#define InterlockedExchange
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void user(int argc, const char *argv[])
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static const WCHAR proxy_server[]
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
static HINSTANCE instance
static WCHAR * strdupAW(const char *src)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
static WCHAR available[MAX_STRING_RESOURCE_LEN]
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
#define ERROR_INVALID_PARAMETER
static __inline const char * debugstr_an(const char *s, int n)
#define ERROR_NOT_SUPPORTED
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define MultiByteToWideChar
static char * strdupWA(const WCHAR *src)
BOOL WINAPI GetModuleHandleExW(IN DWORD dwFlags, IN LPCWSTR lpwModuleName OPTIONAL, OUT HMODULE *phModule)
VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK Lock)
VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK Lock)
VOID WINAPI InitializeSRWLock(PSRWLOCK Lock)
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
BOOL WINAPI DECLSPEC_HOTPATCH TrySubmitThreadpoolCallback(PTP_SIMPLE_CALLBACK callback, PVOID userdata, TP_CALLBACK_ENVIRON *environment)
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
static wchar_t * wcsdup(const wchar_t *str)
HRESULT WINAPI DispGetParam(DISPPARAMS *pdispparams, UINT position, VARTYPE vtTarg, VARIANT *pvarResult, UINT *puArgErr)
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
HRESULT WINAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor, LCID lcid, ITypeLib **ppTLib)
static BOOL alloc_handle(struct handle_table *lpTable, OBJECTHDR *lpObject, HCRYPTKEY *lpHandle)
static const WCHAR versionW[]
struct object_header * grab_object(HINTERNET hinternet)
void release_object(struct object_header *hdr)
struct object_header * addref_object(struct object_header *hdr)
HINSTANCE winhttp_instance
ULONG netconn_query_data_available(struct netconn *conn)
void netconn_release(struct netconn *conn)
DWORD netconn_resolve(WCHAR *hostname, INTERNET_PORT port, struct sockaddr_storage *addr, int timeout)
DWORD netconn_secure_connect(struct netconn *conn, WCHAR *hostname, DWORD security_flags, CredHandle *cred_handle, BOOL check_revocation)
void netconn_cancel_io(struct netconn *conn)
const void * netconn_get_certificate(struct netconn *conn)
DWORD netconn_recv(struct netconn *conn, void *buf, size_t len, int flags, int *recvd)
DWORD netconn_create(struct hostdata *host, const struct sockaddr_storage *sockaddr, int timeout, struct netconn **ret_conn)
void netconn_addref(struct netconn *conn)
BOOL netconn_is_alive(struct netconn *netconn)
DWORD netconn_set_timeout(struct netconn *netconn, BOOL send, int value)
BOOL netconn_wait_overlapped_result(struct netconn *conn, WSAOVERLAPPED *ovr, DWORD *len)
DWORD netconn_send(struct netconn *conn, const void *msg, size_t len, int *sent, WSAOVERLAPPED *ovr)
HINTERNET WINAPI WinHttpOpenRequest(HINTERNET hconnect, const WCHAR *verb, const WCHAR *object, const WCHAR *version, const WCHAR *referrer, const WCHAR **types, DWORD flags)
HINTERNET WINAPI WinHttpOpen(LPCWSTR agent, DWORD access, LPCWSTR proxy, LPCWSTR bypass, DWORD flags)
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 set_server_for_hostname(struct connect *connect, const WCHAR *server, INTERNET_PORT port)
BOOL WINAPI WinHttpCloseHandle(HINTERNET handle)
BOOL WINAPI WinHttpSetTimeouts(HINTERNET handle, int resolve, int connect, int send, int receive)
BOOL WINAPI WinHttpTimeToSystemTime(LPCWSTR string, SYSTEMTIME *time)
WINHTTP_STATUS_CALLBACK WINAPI WinHttpSetStatusCallback(HINTERNET handle, WINHTTP_STATUS_CALLBACK callback, DWORD flags, DWORD_PTR reserved)
BOOL WINAPI WinHttpCrackUrl(const WCHAR *url, DWORD len, DWORD flags, URL_COMPONENTSW *uc)
static ULONG connect_timeout
static const char * debugstr_variant(const VARIANT *var)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble q
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLenum const GLvoid * addr
GLubyte GLubyte GLubyte GLubyte w
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 flag
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
#define DISPID_HTTPREQUEST_OPTION
#define InterlockedCompareExchangePointer
#define InterlockedCompareExchange
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
struct _SYSTEMTIME SYSTEMTIME
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static unsigned int number
static struct _PeImage bin
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static VARIANTARG static DISPID
static const WCHAR user_agentW[]
static void close_connection(void)
static DWORD64 content_length
static BOOL ensure_cred_handle(void)
#define LOCALE_SYSTEM_DEFAULT
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define SecIsValidHandle(x)
#define SECPKG_CRED_OUTBOUND
#define SECURITY_NETWORK_DREP
#define ISC_REQ_MUTUAL_AUTH
#define SecInvalidateHandle(x)
#define ISC_REQ_CONNECTION
#define ISC_REQ_USE_DCE_STYLE
static HRESULT WINAPI stream_LockRegion(IStream *iface, ULARGE_INTEGER offset, ULARGE_INTEGER len, DWORD locktype)
static DWORD query_headers(struct request *request, DWORD level, const WCHAR *name, void *buffer, DWORD *buflen, DWORD *index)
DWORD WINAPI WinHttpWebSocketClose(HINTERNET hsocket, USHORT status, void *reason, DWORD len)
static HRESULT request_receive(struct winhttp_request *request)
static char * build_wire_request(struct request *request, DWORD *len)
DWORD WINAPI WinHttpWebSocketQueryCloseStatus(HINTERNET hsocket, USHORT *status, void *reason, DWORD len, DWORD *ret_len)
static BOOL need_escape(char ch, enum escape_flags flags)
static WCHAR * build_request_string(struct request *request)
static DWORD handle_redirect(struct request *request, DWORD status)
static void release_task(struct task_header *task)
static DWORD refill_buffer(struct request *request, BOOL notify)
DWORD WINAPI WinHttpWebSocketShutdown(HINTERNET hsocket, USHORT status, void *reason, DWORD len)
void init_queue(struct queue *queue)
static HRESULT WINAPI winhttp_request_SetClientCertificate(IWinHttpRequest *iface, BSTR certificate)
static DWORD complete_send_frame(struct socket *socket, WSAOVERLAPPED *ovr, const char *buf)
static DWORD open_connection(struct request *request)
static DWORD socket_close(struct socket *socket)
static HRESULT WINAPI winhttp_request_SetRequestHeader(IWinHttpRequest *iface, BSTR header, BSTR value)
static HRESULT WINAPI winhttp_request_GetIDsOfNames(IWinHttpRequest *iface, REFIID riid, LPOLESTR *names, UINT count, LCID lcid, DISPID *dispid)
static BOOL socket_set_option(struct object_header *hdr, DWORD option, void *buffer, DWORD buflen)
static HRESULT WINAPI stream_Stat(IStream *iface, STATSTG *stg, DWORD flag)
static HRESULT WINAPI winhttp_request_GetTypeInfo(IWinHttpRequest *iface, UINT index, LCID lcid, ITypeInfo **info)
static void task_socket_send_pong(void *ctx, BOOL abort)
static DWORD queue_receive_response(struct request *request)
static void request_set_utf8_content_type(struct winhttp_request *request)
static BOOL validate_buffer_type(WINHTTP_WEB_SOCKET_BUFFER_TYPE type, enum fragment_type current_fragment)
static HRESULT WINAPI winhttp_request_put_Option(IWinHttpRequest *iface, WinHttpRequestOption option, VARIANT value)
static void socket_send_complete(struct socket *socket, DWORD ret, WINHTTP_WEB_SOCKET_BUFFER_TYPE type, DWORD len)
static void task_receive_response(void *ctx, BOOL abort)
static HRESULT WINAPI winhttp_request_get_StatusText(IWinHttpRequest *iface, BSTR *status)
static BOOL valid_token_char(WCHAR c)
static BOOL socket_can_receive(struct socket *socket)
static DWORD query_data_available(struct request *request, DWORD *available, BOOL async)
static DWORD auth_scheme_from_header(const WCHAR *header)
static ULONG WINAPI stream_AddRef(IStream *iface)
static void wait_set_status_callback(struct winhttp_request *request, DWORD status)
static void socket_shutdown_complete(struct socket *socket, DWORD ret)
static void update_value_from_digit(DWORD *value, char ch)
static WINHTTP_WEB_SOCKET_BUFFER_TYPE map_opcode(struct socket *socket, enum socket_opcode opcode, BOOL fragment)
static BOOL do_authorization(struct request *request, DWORD target, DWORD scheme_flag)
static ULONG WINAPI winhttp_request_Release(IWinHttpRequest *iface)
static DWORD request_get_codepage(struct winhttp_request *request, UINT *codepage)
static BOOL get_chunk_size(struct request *request)
static struct list connection_pool
BOOL WINAPI WinHttpQueryHeaders(HINTERNET hrequest, DWORD level, const WCHAR *name, void *buffer, DWORD *buflen, DWORD *index)
static HRESULT WINAPI winhttp_request_SetProxy(IWinHttpRequest *iface, HTTPREQUEST_PROXY_SETTING proxy_setting, VARIANT proxy_server, VARIANT bypass_list)
static void receive_io_complete(struct socket *socket)
static struct header * parse_header(const WCHAR *string, size_t string_len, BOOL reply)
static HRESULT WINAPI winhttp_request_get_ResponseText(IWinHttpRequest *iface, BSTR *body)
static DWORD receive_frame(struct socket *socket, DWORD *ret_len, enum socket_opcode *opcode, BOOL *final)
static HRESULT WINAPI stream_Clone(IStream *iface, IStream **stream)
static void delete_header(struct request *request, DWORD index)
static const struct IWinHttpRequestVtbl winhttp_request_vtbl
static DWORD read_more_data(struct request *request, int maxlen, BOOL notify)
static HRESULT WINAPI winhttp_request_Abort(IWinHttpRequest *iface)
static DWORD receive_bytes(struct socket *socket, char *buf, DWORD len, DWORD *ret_len, BOOL read_full_buffer)
#define DEFAULT_KEEP_ALIVE_TIMEOUT
static ITypeInfo * winhttp_typeinfo[last_tid]
static HRESULT WINAPI stream_CopyTo(IStream *iface, IStream *stream, ULARGE_INTEGER len, ULARGE_INTEGER *read, ULARGE_INTEGER *written)
static HRESULT WINAPI winhttp_request_QueryInterface(IWinHttpRequest *iface, REFIID riid, void **obj)
static DWORD read_reply(struct request *request)
static DWORD socket_drain(struct socket *socket)
static BOOL connection_collector_running
BOOL WINAPI WinHttpAddRequestHeaders(HINTERNET hrequest, const WCHAR *headers, DWORD len, DWORD flags)
static void set_content_length(struct request *request, DWORD status)
static unsigned int decode_base64(const WCHAR *base64, unsigned int len, char *buf)
static void task_query_data_available(void *ctx, BOOL abort)
#define ESCAPE_MASK_DISABLE
static BOOL end_of_read_data(struct request *request)
#define ACTUAL_DEFAULT_RECEIVE_RESPONSE_TIMEOUT
static void clear_response_headers(struct request *request)
static DWORD send_bytes(struct socket *socket, char *bytes, int len, int *sent, WSAOVERLAPPED *ovr)
static enum socket_opcode map_buffer_type(struct socket *socket, WINHTTP_WEB_SOCKET_BUFFER_TYPE type)
static HRESULT WINAPI winhttp_request_Send(IWinHttpRequest *iface, VARIANT body)
static HRESULT WINAPI winhttp_request_get_ResponseStream(IWinHttpRequest *iface, VARIANT *body)
static BOOL get_authvalue(struct request *request, DWORD level, DWORD scheme, WCHAR *buffer, DWORD len)
static void task_send_request(void *ctx, BOOL abort)
static void socket_handle_closing(struct object_header *hdr)
DWORD WINAPI WinHttpWebSocketReceive(HINTERNET hsocket, void *buf, DWORD len, DWORD *ret_len, WINHTTP_WEB_SOCKET_BUFFER_TYPE *ret_type)
void release_host(struct hostdata *host)
static ITypeLib * winhttp_typelib
static DWORD get_available_data(struct request *request)
static char decode_char(WCHAR c)
static void task_socket_shutdown(void *ctx, BOOL abort)
static DWORD queue_task(struct queue *queue, TASK_CALLBACK task, struct task_header *task_hdr, struct object_header *obj)
static DWORD send_socket_shutdown(struct socket *socket, USHORT status, const void *reason, DWORD len, BOOL send_callback)
static void send_io_complete(struct object_header *hdr)
static DWORD insert_header(struct request *request, struct header *header)
static DWORD handle_control_frame(struct socket *socket)
static void socket_close_complete(struct socket *socket, DWORD ret)
static int request_receive_response_timeout(struct request *req)
static DWORD send_frame(struct socket *socket, enum socket_opcode opcode, USHORT status, const char *buf, DWORD buflen, BOOL final, WSAOVERLAPPED *ovr)
static void free_header(struct header *header)
static HRESULT get_typeinfo(enum type_id tid, ITypeInfo **ret)
static HRESULT WINAPI winhttp_request_WaitForResponse(IWinHttpRequest *iface, VARIANT timeout, VARIANT_BOOL *succeeded)
static DWORD start_next_chunk(struct request *request, BOOL notify)
static HRESULT WINAPI stream_UnlockRegion(IStream *iface, ULARGE_INTEGER offset, ULARGE_INTEGER len, DWORD locktype)
static ULONG WINAPI stream_Release(IStream *iface)
static void drain_content(struct request *request)
#define INITIAL_HEADER_BUFFER_LEN
static BOOL skip_async_queue(struct request *request, BOOL *wont_block, DWORD to_read)
static DWORD handle_authorization(struct request *request, DWORD status)
static DWORD request_wait(struct winhttp_request *request, DWORD timeout)
DWORD WINAPI WinHttpWebSocketSend(HINTERNET hsocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE type, void *buf, DWORD len)
static HRESULT WINAPI winhttp_request_SetAutoLogonPolicy(IWinHttpRequest *iface, WinHttpRequestAutoLogonPolicy policy)
BOOL WINAPI WinHttpQueryDataAvailable(HINTERNET hrequest, LPDWORD available)
static DWORD wait_for_completion(struct winhttp_request *request)
static DWORD add_host_header(struct request *request, DWORD modifier)
static void task_socket_send(void *ctx, BOOL abort)
static DWORD discard_eol(struct request *request, BOOL notify)
static enum auth_scheme scheme_from_flag(DWORD flag)
static struct authinfo * alloc_authinfo(void)
static void task_write_data(void *ctx, BOOL abort)
static void addref_task(struct task_header *task)
static void finished_reading(struct request *request)
static HRESULT WINAPI winhttp_request_Open(IWinHttpRequest *iface, BSTR method, BSTR url, VARIANT async)
static UINT encode_base64(const char *bin, unsigned int len, WCHAR *base64)
static DWORD set_credentials(struct request *request, DWORD target, DWORD scheme_flag, const WCHAR *username, const WCHAR *password)
static HRESULT WINAPI winhttp_request_GetTypeInfoCount(IWinHttpRequest *iface, UINT *count)
static HRESULT WINAPI winhttp_request_SetTimeouts(IWinHttpRequest *iface, LONG resolve_timeout, LONG connect_timeout, LONG send_timeout, LONG receive_timeout)
void stop_queue(struct queue *queue)
static void reset_request(struct winhttp_request *request)
static DWORD add_websocket_key_header(struct request *request)
static void remove_data(struct request *request, int count)
static BOOL cancel_queue(struct queue *queue)
DWORD add_request_headers(struct request *request, const WCHAR *headers, DWORD len, DWORD flags)
BOOL WINAPI WinHttpWriteData(HINTERNET hrequest, const void *buffer, DWORD to_write, DWORD *written)
static DWORD map_secure_protocols(DWORD mask)
static void task_send_callback(void *ctx, BOOL abort)
static const struct object_vtbl socket_vtbl
static void initialize_request(struct winhttp_request *request)
static void cancel_request(struct winhttp_request *request)
void release_typelib(void)
#define ESCAPE_MASK_PERCENT
static HRESULT WINAPI stream_Revert(IStream *iface)
static DWORD secure_proxy_connect(struct request *request)
#define QUERY_MODIFIER_MASK
BOOL WINAPI WinHttpReadData(HINTERNET hrequest, void *buffer, DWORD to_read, DWORD *read)
static DWORD escape_string(const char *src, DWORD len, char *dst, enum escape_flags flags)
static void CALLBACK wait_status_callback(HINTERNET handle, DWORD_PTR context, DWORD status, LPVOID buffer, DWORD size)
static BOOL is_passport_request(struct request *request)
static DWORD get_redirect_url(struct request *request, WCHAR **ret_url, DWORD *ret_len)
static HRESULT WINAPI winhttp_request_GetResponseHeader(IWinHttpRequest *iface, BSTR header, BSTR *value)
static DWORD query_auth_schemes(struct request *request, DWORD level, DWORD *supported, DWORD *first)
static HRESULT WINAPI stream_Seek(IStream *iface, LARGE_INTEGER move, DWORD origin, ULARGE_INTEGER *newpos)
static struct winhttp_request * impl_from_IWinHttpRequest(IWinHttpRequest *iface)
static WCHAR * create_websocket_key(void)
static HRESULT WINAPI stream_SetSize(IStream *iface, ULARGE_INTEGER newsize)
DWORD process_header(struct request *request, const WCHAR *field, const WCHAR *value, DWORD flags, BOOL request_only)
BOOL WINAPI WinHttpSetCredentials(HINTERNET hrequest, DWORD target, DWORD scheme, const WCHAR *username, const WCHAR *password, void *params)
#define ESCAPE_MASK_DEFAULT
static WCHAR * build_absolute_request_path(struct request *request, const WCHAR **path)
static void task_read_data(void *ctx, BOOL abort)
static const WCHAR * attribute_table[]
static BOOL task_needs_completion(struct task_header *task_hdr)
static HRESULT WINAPI winhttp_request_GetAllResponseHeaders(IWinHttpRequest *iface, BSTR *headers)
static HRESULT WINAPI stream_Write(IStream *iface, const void *buf, ULONG len, ULONG *written)
static struct stream * impl_from_IStream(IStream *iface)
static void record_cookies(struct request *request)
static DWORD query_data_ready(struct request *request)
HRESULT WinHttpRequest_create(void **obj)
static char * build_wire_path(struct request *request, DWORD *ret_len)
static CRITICAL_SECTION connection_pool_cs
static DWORD receive_close_status(struct socket *socket, DWORD len)
static const struct @632 auth_schemes[]
@ ESCAPE_FLAG_NON_PRINTABLE
static void CALLBACK connection_collector(TP_CALLBACK_INSTANCE *instance, void *ctx)
static HRESULT request_send(struct winhttp_request *request)
HINTERNET WINAPI WinHttpWebSocketCompleteUpgrade(HINTERNET hrequest, DWORD_PTR context)
@ REQUEST_STATE_RESPONSE_RECEIVED
@ REQUEST_STATE_INITIALIZED
@ REQUEST_STATE_CANCELLED
static void CALLBACK task_callback(TP_CALLBACK_INSTANCE *instance, void *ctx)
static HRESULT WINAPI winhttp_request_get_Option(IWinHttpRequest *iface, WinHttpRequestOption option, VARIANT *value)
static HRESULT WINAPI stream_QueryInterface(IStream *iface, REFIID riid, void **obj)
static WCHAR * addr_to_str(struct sockaddr_storage *addr)
static DWORD handle_passport_redirect(struct request *request)
static CRITICAL_SECTION_DEBUG connection_pool_debug
void destroy_authinfo(struct authinfo *authinfo)
static HRESULT WINAPI winhttp_request_get_Status(IWinHttpRequest *iface, LONG *status)
static BOOL socket_can_send(struct socket *socket)
static HRESULT WINAPI stream_Commit(IStream *iface, DWORD flags)
static struct task_header * get_next_task(struct queue *queue, struct task_header *prev_task)
static HRESULT WINAPI stream_Read(IStream *iface, void *buf, ULONG len, ULONG *read)
static void CALLBACK send_and_receive_proc(TP_CALLBACK_INSTANCE *instance, void *ctx)
static ULONG WINAPI winhttp_request_AddRef(IWinHttpRequest *iface)
static REFIID winhttp_tid_id[]
static void socket_destroy(struct object_header *hdr)
static void free_request(struct winhttp_request *request)
static void socket_receive_complete(struct socket *socket, DWORD ret, WINHTTP_WEB_SOCKET_BUFFER_TYPE type, DWORD len)
static DWORD str_to_wire(const WCHAR *src, int src_len, char *dst, enum escape_flags flags)
static const IStreamVtbl stream_vtbl
static HRESULT WINAPI winhttp_request_Invoke(IWinHttpRequest *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excep_info, UINT *arg_err)
static DWORD socket_send_pong(struct socket *socket)
static int get_header_index(struct request *request, const WCHAR *field, int requested_index, BOOL request_only)
BOOL WINAPI WinHttpSendRequest(HINTERNET hrequest, const WCHAR *headers, DWORD headers_len, void *optional, DWORD optional_len, DWORD total_len, DWORD_PTR context)
static HRESULT WINAPI winhttp_request_get_ResponseBody(IWinHttpRequest *iface, VARIANT *body)
static BOOL is_supported_opcode(enum socket_opcode opcode)
BOOL WINAPI WinHttpReceiveResponse(HINTERNET hrequest, LPVOID reserved)
static DWORD request_set_parameters(struct winhttp_request *request)
static void cache_connection(struct netconn *netconn)
static HRESULT WINAPI winhttp_request_SetCredentials(IWinHttpRequest *iface, BSTR username, BSTR password, HTTPREQUEST_SETCREDENTIALS_FLAGS flags)
BOOL WINAPI WinHttpQueryAuthSchemes(HINTERNET hrequest, LPDWORD supported, LPDWORD first, LPDWORD target)
static void task_socket_close(void *ctx, BOOL abort)
static WCHAR * build_proxy_connect_string(struct request *request)
static void task_socket_receive(void *ctx, BOOL abort)
static BOOL socket_query_option(struct object_header *hdr, DWORD option, void *buffer, DWORD *buflen)
static void accepted(enum accept_stat, struct rpc_err *)
static BOOL is_secure(RpcConnection_http *httpc)
#define SEC_WINNT_AUTH_IDENTITY_UNICODE
#define SP_PROT_TLS1_1_CLIENT
#define SP_PROT_TLS1_CLIENT
#define SCHANNEL_CRED_VERSION
#define SP_PROT_TLS1_2_CLIENT
#define SP_PROT_SSL2_CLIENT
#define SP_PROT_SSL3_CLIENT
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
vector< Header * > headers
SECURITY_STATUS WINAPI FreeContextBuffer(PVOID pv)
wchar_t const *const size_t const buffer_size
LIST_ENTRY ProcessLocksList
DWORD grbitEnabledProtocols
struct sockaddr_storage sockaddr
struct sockaddr_storage sockaddr
unsigned int websocket_set_send_buffer_size
struct request::@633 creds[TARGET_MAX][SCHEME_MAX]
const CERT_CONTEXT * server_cert
const CERT_CONTEXT * client_cert
struct authinfo * authinfo
unsigned int websocket_send_buffer_size
int receive_response_timeout
BOOL cred_handle_initialized
struct authinfo * proxy_authinfo
enum request_response_state state
enum fragment_type sending_fragment_type
unsigned int send_frame_buffer_size
enum socket_opcode opcode
DWORD close_frame_receive_err
enum fragment_type receiving_fragment_type
unsigned int send_remaining_size
volatile LONG pending_noncontrol_send
unsigned int bytes_in_read_buffer
unsigned int client_buffer_offset
unsigned int bytes_in_send_frame_buffer
unsigned int send_buffer_size
BOOL close_frame_received
IWinHttpRequest IWinHttpRequest_iface
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(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)
WINBASEAPI VOID WINAPI FreeLibraryWhenCallbackReturns(_Inout_ PTP_CALLBACK_INSTANCE pci, _In_ HMODULE mod)
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define CONTAINING_RECORD(address, type, field)
static EFI_HANDLE * handles
const char *WSAAPI inet_ntop(int af, const void *src, char *dst, size_t cnt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_INVALID_OPERATION
#define DISP_E_UNKNOWNINTERFACE
#define SEC_I_CONTINUE_NEEDED
#define ERROR_INTERNAL_ERROR
BOOL set_cookies(struct request *request, const WCHAR *cookies)
DWORD add_cookie_headers(struct request *request)
#define WINHTTP_OPTION_PROXY
#define WINHTTP_HANDLE_TYPE_REQUEST
#define WINHTTP_DISABLE_AUTHENTICATION
#define WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED
#define WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE
#define WINHTTP_QUERY_CONTENT_LENGTH
#define ERROR_WINHTTP_INTERNAL_ERROR
#define WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN
#define WINHTTP_OPTION_CONTEXT_VALUE
#define WINHTTP_CALLBACK_STATUS_REDIRECT
#define WINHTTP_FLAG_ESCAPE_DISABLE_QUERY
#define SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE
#define WINHTTP_QUERY_WWW_AUTHENTICATE
#define WINHTTP_QUERY_CONNECTION
#define WINHTTP_CALLBACK_STATUS_SENDING_REQUEST
#define WINHTTP_QUERY_VERSION
#define HTTP_STATUS_NO_CONTENT
#define ERROR_WINHTTP_OPERATION_CANCELLED
#define WINHTTP_OPTION_SECURITY_FLAGS
#define WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE
#define WINHTTP_CALLBACK_STATUS_REQUEST_SENT
#define WINHTTP_OPTION_REDIRECT_POLICY_NEVER
#define WINHTTP_QUERY_FLAG_SYSTEMTIME
#define WINHTTP_AUTH_SCHEME_BASIC
#define WINHTTP_QUERY_PROXY_AUTHENTICATE
#define ERROR_WINHTTP_INVALID_SERVER_RESPONSE
#define WINHTTP_AUTH_SCHEME_PASSPORT
#define ERROR_WINHTTP_HEADER_ALREADY_EXISTS
#define WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
#define API_QUERY_DATA_AVAILABLE
#define WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE
#define WINHTTP_QUERY_PROXY_CONNECTION
#define WINHTTP_OPTION_DISABLE_FEATURE
#define HTTP_STATUS_PROXY_AUTH_REQ
#define WINHTTP_ADDREQ_FLAG_ADD_IF_NEW
#define WINHTTP_DISABLE_KEEP_ALIVE
#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON
#define WINHTTP_QUERY_STATUS_CODE
#define WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION
#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 WINHTTP_QUERY_CONTENT_TYPE
#define ERROR_WINHTTP_SECURE_FAILURE
#define WINHTTP_CALLBACK_STATUS_READ_COMPLETE
#define WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP
#define WINHTTP_AUTH_SCHEME_NEGOTIATE
#define WINHTTP_AUTH_TARGET_SERVER
#define WINHTTP_QUERY_LOCATION
#define ERROR_WINHTTP_INCORRECT_HANDLE_STATE
#define ERROR_WINHTTP_INVALID_OPTION
#define WINHTTP_ADDREQ_FLAG_ADD
#define WINHTTP_AUTH_SCHEME_DIGEST
#define WINHTTP_QUERY_FLAG_NUMBER
#define WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED
#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID
#define HTTP_STATUS_REDIRECT_KEEP_VERB
#define ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND
#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL2
@ WINHTTP_WEB_SOCKET_CLOSE_OPERATION
@ WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION
@ WINHTTP_WEB_SOCKET_RECEIVE_OPERATION
@ WINHTTP_WEB_SOCKET_SEND_OPERATION
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM
#define WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER
@ WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE
@ WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE
#define WINHTTP_OPTION_AUTOLOGON_POLICY
#define WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER
#define WINHTTP_QUERY_CUSTOM
#define INTERNET_SCHEME_HTTP
#define ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
#define WINHTTP_ACCESS_TYPE_NO_PROXY
#define WINHTTP_QUERY_STATUS_TEXT
#define API_RECEIVE_RESPONSE
#define WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE
#define WINHTTP_FLAG_ESCAPE_PERCENT
enum _WINHTTP_WEB_SOCKET_BUFFER_TYPE WINHTTP_WEB_SOCKET_BUFFER_TYPE
#define WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
#define WINHTTP_FLAG_ASYNC
#define WINHTTP_AUTH_TARGET_PROXY
#define WINHTTP_FLAG_ESCAPE_DISABLE
#define HTTP_STATUS_DENIED
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW
#define WINHTTP_CALLBACK_STATUS_RESOLVING_NAME
#define ERROR_WINHTTP_LOGIN_FAILURE
#define WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE
#define WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL
#define WINHTTP_ADDREQ_FLAG_REPLACE
#define ERROR_WINHTTP_HEADER_NOT_FOUND
#define WINHTTP_CALLBACK_STATUS_NAME_RESOLVED
#define WINHTTP_QUERY_TRANSFER_ENCODING
#define WINHTTP_CALLBACK_STATUS_HANDLE_CREATED
#define HTTP_STATUS_NOT_MODIFIED
#define WINHTTP_QUERY_RAW_HEADERS_CRLF
#define WINHTTP_FLAG_SECURE
#define INTERNET_DEFAULT_HTTP_PORT
#define WINHTTP_QUERY_REQUEST_METHOD
#define WINHTTP_DISABLE_REDIRECTS
#define ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND
#define INTERNET_SCHEME_HTTPS
#define WINHTTP_FLAG_REFRESH
#define WINHTTP_FLAG_SECURE_PROTOCOL_SSL3
#define HTTP_STATUS_REDIRECT
#define HTTP_STATUS_MOVED
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1
#define WINHTTP_AUTH_SCHEME_NTLM
#define SECURITY_FLAG_IGNORE_UNKNOWN_CA
#define ERROR_WINHTTP_INVALID_HEADER
#define WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
#define WINHTTP_DISABLE_COOKIES
#define WINHTTP_QUERY_RAW_HEADERS
#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID
#define ERROR_WINHTTP_REDIRECT_FAILED
#define INTERNET_DEFAULT_HTTPS_PORT
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1
@ REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REQUEST_SENT
@ REQUEST_RESPONSE_STATE_SENDING_REQUEST
@ REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED
@ REQUEST_RESPONSE_STATE_RESPONSE_RECEIVED
@ REQUEST_RESPONSE_RECURSIVE_REQUEST
@ REQUEST_RESPONSE_STATE_NONE
@ REQUEST_RESPONSE_STATE_REQUEST_SENT
@ REQUEST_RESPONSE_STATE_REPLY_RECEIVED
@ REQUEST_RESPONSE_STATE_READ_RESPONSE_QUEUED_REPLY_RECEIVED
@ REQUEST_FLAG_WEBSOCKET_UPGRADE
#define MIN_WEBSOCKET_SEND_BUFFER_SIZE
void(* TASK_CALLBACK)(void *ctx, BOOL abort)
#define WINHTTP_HANDLE_TYPE_SOCKET
DWORD set_cookie(substr_t domain, substr_t path, substr_t name, substr_t data, DWORD flags)
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE
int PASCAL FAR WSAGetLastError(void)
BOOL WINAPI TranslateMessage(_In_ const MSG *)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle phCredential, PCtxtHandle phContext, SEC_WCHAR *pszTargetName, ULONG fContextReq, ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, ULONG *pfContextAttr, PTimeStamp ptsExpiry)
SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle phContext)
SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo)
SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle phCredential)
#define RtlUlonglongByteSwap(_x)
#define RtlUshortByteSwap(_x)