ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

http.c File Reference
#include "config.h"
#include "wine/port.h"
#include <sys/types.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include "windef.h"
#include "winbase.h"
#include "wininet.h"
#include "winerror.h"
#include "winternl.h"
#include "shlwapi.h"
#include "sspi.h"
#include "wincrypt.h"
#include "internet.h"
#include "wine/debug.h"
#include "wine/exception.h"
#include "wine/unicode.h"
#include "inet_ntop.c"

Go to the source code of this file.

Data Structures

struct  HttpAuthInfo
struct  basicAuthorizationData
struct  authorizationData
struct  data_stream_vtbl_t
struct  chunked_stream_t

Defines

#define NO_SHLWAPI_STREAM
#define NO_SHLWAPI_REG
#define NO_SHLWAPI_STRFCNS
#define NO_SHLWAPI_GDI
#define MAXHOSTNAME   100
#define MAX_FIELD_VALUE_LEN   256
#define MAX_FIELD_LEN   256
#define HTTP_REFERER   szReferer
#define HTTP_ACCEPT   szAccept
#define HTTP_USERAGENT   szUser_Agent
#define HTTP_ADDHDR_FLAG_ADD   0x20000000
#define HTTP_ADDHDR_FLAG_ADD_IF_NEW   0x10000000
#define HTTP_ADDHDR_FLAG_COALESCE   0x40000000
#define HTTP_ADDHDR_FLAG_COALESCE_WITH_COMMA   0x40000000
#define HTTP_ADDHDR_FLAG_COALESCE_WITH_SEMICOLON   0x01000000
#define HTTP_ADDHDR_FLAG_REPLACE   0x80000000
#define HTTP_ADDHDR_FLAG_REQ   0x02000000
#define COLLECT_TIME   60000
#define ARRAYSIZE(array)   (sizeof(array)/sizeof((array)[0]))
#define CH(x)
#define LAST_TABLE_HEADER   (sizeof(header_lookup)/sizeof(header_lookup[0]))
#define FE(x)   { x, #x }
#define COALESCEFLAGS   (HTTP_ADDHDR_FLAG_COALESCE|HTTP_ADDHDR_FLAG_COALESCE_WITH_COMMA|HTTP_ADDHDR_FLAG_COALESCE_WITH_SEMICOLON)

Enumerations

enum  read_mode_t { READMODE_SYNC, READMODE_ASYNC, READMODE_NOBLOCK }

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wininet)
static BOOL HTTP_GetResponseHeaders (http_request_t *req, BOOL clear)
static DWORD HTTP_ProcessHeader (http_request_t *req, LPCWSTR field, LPCWSTR value, DWORD dwModifier)
static LPWSTRHTTP_InterpretHttpHeader (LPCWSTR buffer)
static DWORD HTTP_InsertCustomHeader (http_request_t *req, LPHTTPHEADERW lpHdr)
static INT HTTP_GetCustomHeaderIndex (http_request_t *req, LPCWSTR lpszField, INT index, BOOL Request)
static BOOL HTTP_DeleteCustomHeader (http_request_t *req, DWORD index)
static LPWSTR HTTP_build_req (LPCWSTR *list, int len)
static DWORD HTTP_HttpQueryInfoW (http_request_t *, DWORD, LPVOID, LPDWORD, LPDWORD)
static LPWSTR HTTP_GetRedirectURL (http_request_t *req, LPCWSTR lpszUrl)
static UINT HTTP_DecodeBase64 (LPCWSTR base64, LPSTR bin)
static BOOL HTTP_VerifyValidHeader (http_request_t *req, LPCWSTR field)
void server_addref (server_t *server)
void server_release (server_t *server)
static server_tget_server (const WCHAR *name, INTERNET_PORT port)
BOOL collect_connections (BOOL collect_all)
static DWORD WINAPI collect_connections_proc (void *arg)
static LPHTTPHEADERW HTTP_GetHeader (http_request_t *req, LPCWSTR head)
static void destroy_data_stream (data_stream_t *stream)
static void reset_data_stream (http_request_t *req)
static DWORD init_gzip_stream (http_request_t *req)
static LPWSTRHTTP_Tokenize (LPCWSTR string, LPCWSTR token_string)
static void HTTP_FreeTokens (LPWSTR *token_array)
static void HTTP_FixURL (http_request_t *request)
static LPWSTR HTTP_BuildHeaderRequestString (http_request_t *request, LPCWSTR verb, LPCWSTR path, LPCWSTR version)
static void HTTP_ProcessCookies (http_request_t *request)
static void strip_spaces (LPWSTR start)
static BOOL is_basic_auth_value (LPCWSTR pszAuthValue, LPWSTR *pszRealm)
static void destroy_authinfo (struct HttpAuthInfo *authinfo)
static UINT retrieve_cached_basic_authorization (LPWSTR host, LPWSTR realm, LPSTR *auth_data)
static void cache_basic_authorization (LPWSTR host, LPWSTR realm, LPSTR auth_data, UINT auth_data_len)
static BOOL retrieve_cached_authorization (LPWSTR host, LPWSTR scheme, SEC_WINNT_AUTH_IDENTITY_W *nt_auth_identity)
static void cache_authorization (LPWSTR host, LPWSTR scheme, SEC_WINNT_AUTH_IDENTITY_W *nt_auth_identity)
static BOOL HTTP_DoAuthorization (http_request_t *request, LPCWSTR pszAuthValue, struct HttpAuthInfo **ppAuthInfo, LPWSTR domain_and_username, LPWSTR password, LPWSTR host)
static DWORD HTTP_HttpAddRequestHeadersW (http_request_t *request, LPCWSTR lpszHeader, DWORD dwHeaderLength, DWORD dwModifier)
BOOL WINAPI HttpAddRequestHeadersW (HINTERNET hHttpRequest, LPCWSTR lpszHeader, DWORD dwHeaderLength, DWORD dwModifier)
BOOL WINAPI HttpAddRequestHeadersA (HINTERNET hHttpRequest, LPCSTR lpszHeader, DWORD dwHeaderLength, DWORD dwModifier)
HINTERNET WINAPI HttpOpenRequestA (HINTERNET hHttpSession, LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion, LPCSTR lpszReferrer, LPCSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext)
static UINT HTTP_EncodeBase64 (LPCSTR bin, unsigned int len, LPWSTR base64)
static BOOL HTTP_InsertAuthorization (http_request_t *request, struct HttpAuthInfo *pAuthInfo, LPCWSTR header)
static WCHARHTTP_BuildProxyRequestUrl (http_request_t *req)
static BOOL HTTP_DealWithProxy (appinfo_t *hIC, http_session_t *session, http_request_t *request)
static DWORD HTTP_ResolveName (http_request_t *request, server_t *server)
static BOOL HTTP_GetRequestURL (http_request_t *req, LPWSTR buf)
static void HTTPREQ_Destroy (object_header_t *hdr)
static void http_release_netconn (http_request_t *req, BOOL reuse)
static void drain_content (http_request_t *req)
static BOOL HTTP_KeepAlive (http_request_t *request)
static void HTTPREQ_CloseConnection (object_header_t *hdr)
static DWORD HTTPREQ_QueryOption (object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
static DWORD HTTPREQ_SetOption (object_header_t *hdr, DWORD option, void *buffer, DWORD size)
static DWORD read_more_data (http_request_t *req, int maxlen)
static void remove_data (http_request_t *req, int count)
static BOOL read_line (http_request_t *req, LPSTR buffer, DWORD *len)
static BOOL end_of_read_data (http_request_t *req)
static DWORD refill_read_buffer (http_request_t *req, read_mode_t read_mode, DWORD *read_bytes)
static DWORD get_avail_data (http_request_t *req)
static DWORD netconn_get_avail_data (data_stream_t *stream, http_request_t *req)
static BOOL netconn_end_of_data (data_stream_t *stream, http_request_t *req)
static DWORD netconn_read (data_stream_t *stream, http_request_t *req, BYTE *buf, DWORD size, DWORD *read, read_mode_t read_mode)
static BOOL netconn_drain_content (data_stream_t *stream, http_request_t *req)
static void netconn_destroy (data_stream_t *stream)
static DWORD read_more_chunked_data (chunked_stream_t *stream, http_request_t *req, int maxlen)
static void remove_chunked_data (chunked_stream_t *stream, int count)
static DWORD discard_chunked_eol (chunked_stream_t *stream, http_request_t *req)
static DWORD start_next_chunk (chunked_stream_t *stream, http_request_t *req)
static DWORD chunked_get_avail_data (data_stream_t *stream, http_request_t *req)
static BOOL chunked_end_of_data (data_stream_t *stream, http_request_t *req)
static DWORD chunked_read (data_stream_t *stream, http_request_t *req, BYTE *buf, DWORD size, DWORD *read, read_mode_t read_mode)
static BOOL chunked_drain_content (data_stream_t *stream, http_request_t *req)
static void chunked_destroy (data_stream_t *stream)
static DWORD set_content_length (http_request_t *request, DWORD status_code)
static void HTTP_ReceiveRequestData (http_request_t *req, BOOL first_notif)
static DWORD HTTPREQ_Read (http_request_t *req, void *buffer, DWORD size, DWORD *read, BOOL sync)
static DWORD HTTPREQ_ReadFile (object_header_t *hdr, void *buffer, DWORD size, DWORD *read)
static void HTTPREQ_AsyncReadFileExAProc (WORKREQUEST *workRequest)
static DWORD HTTPREQ_ReadFileExA (object_header_t *hdr, INTERNET_BUFFERSA *buffers, DWORD flags, DWORD_PTR context)
static void HTTPREQ_AsyncReadFileExWProc (WORKREQUEST *workRequest)
static DWORD HTTPREQ_ReadFileExW (object_header_t *hdr, INTERNET_BUFFERSW *buffers, DWORD flags, DWORD_PTR context)
static DWORD HTTPREQ_WriteFile (object_header_t *hdr, const void *buffer, DWORD size, DWORD *written)
static void HTTPREQ_AsyncQueryDataAvailableProc (WORKREQUEST *workRequest)
static DWORD HTTPREQ_QueryDataAvailable (object_header_t *hdr, DWORD *available, DWORD flags, DWORD_PTR ctx)
static DWORD HTTP_HttpOpenRequestW (http_session_t *session, LPCWSTR lpszVerb, LPCWSTR lpszObjectName, LPCWSTR lpszVersion, LPCWSTR lpszReferrer, LPCWSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext, HINTERNET *ret)
HINTERNET WINAPI HttpOpenRequestW (HINTERNET hHttpSession, LPCWSTR lpszVerb, LPCWSTR lpszObjectName, LPCWSTR lpszVersion, LPCWSTR lpszReferrer, LPCWSTR *lpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpQueryInfoW (HINTERNET hHttpRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
BOOL WINAPI HttpQueryInfoA (HINTERNET hHttpRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
static DWORD HTTP_HandleRedirect (http_request_t *request, LPCWSTR lpszUrl)
static DWORD HTTP_SecureProxyConnect (http_request_t *request)
static void HTTP_InsertCookies (http_request_t *request)
static WORD HTTP_ParseDay (LPCWSTR day)
static WORD HTTP_ParseMonth (LPCWSTR month)
static BOOL HTTP_ParseTime (SYSTEMTIME *st, LPCWSTR *str)
static BOOL HTTP_ParseDateAsAsctime (LPCWSTR value, FILETIME *ft)
static BOOL HTTP_ParseRfc1123Date (LPCWSTR value, FILETIME *ft)
static BOOL HTTP_ParseDate (LPCWSTR value, FILETIME *ft)
static void HTTP_ProcessExpires (http_request_t *request)
static void HTTP_ProcessLastModified (http_request_t *request)
static void http_process_keep_alive (http_request_t *req)
static void HTTP_CacheRequest (http_request_t *request)
static DWORD open_http_connection (http_request_t *request, BOOL *reusing)
static DWORD HTTP_HttpSendRequestW (http_request_t *request, LPCWSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwContentLength, BOOL bEndRequest)
static void AsyncHttpSendRequestProc (WORKREQUEST *workRequest)
static DWORD HTTP_HttpEndRequestW (http_request_t *request, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpEndRequestA (HINTERNET hRequest, LPINTERNET_BUFFERSA lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
static void AsyncHttpEndRequestProc (WORKREQUEST *work)
BOOL WINAPI HttpEndRequestW (HINTERNET hRequest, LPINTERNET_BUFFERSW lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpSendRequestExA (HINTERNET hRequest, LPINTERNET_BUFFERSA lpBuffersIn, LPINTERNET_BUFFERSA lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpSendRequestExW (HINTERNET hRequest, LPINTERNET_BUFFERSW lpBuffersIn, LPINTERNET_BUFFERSW lpBuffersOut, DWORD dwFlags, DWORD_PTR dwContext)
BOOL WINAPI HttpSendRequestW (HINTERNET hHttpRequest, LPCWSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD dwOptionalLength)
BOOL WINAPI HttpSendRequestA (HINTERNET hHttpRequest, LPCSTR lpszHeaders, DWORD dwHeaderLength, LPVOID lpOptional, DWORD dwOptionalLength)
static void HTTPSESSION_Destroy (object_header_t *hdr)
static DWORD HTTPSESSION_QueryOption (object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
static DWORD HTTPSESSION_SetOption (object_header_t *hdr, DWORD option, void *buffer, DWORD size)
DWORD HTTP_Connect (appinfo_t *hIC, LPCWSTR lpszServerName, INTERNET_PORT serverPort, LPCWSTR lpszUserName, LPCWSTR lpszPassword, DWORD dwFlags, DWORD_PTR dwContext, DWORD dwInternalFlags, HINTERNET *ret)
static void HTTP_clear_response_headers (http_request_t *request)
BOOL WINAPI IsHostInProxyBypassList (DWORD flags, LPCSTR szHost, DWORD length)
BOOL WINAPI InternetShowSecurityInfoByURLA (LPCSTR url, HWND window)
BOOL WINAPI InternetShowSecurityInfoByURLW (LPCWSTR url, HWND window)

Variables

static const WCHAR g_szHttp1_0 [] = {'H','T','T','P','/','1','.','0',0}
static const WCHAR g_szHttp1_1 [] = {'H','T','T','P','/','1','.','1',0}
static const WCHAR szOK [] = {'O','K',0}
static const WCHAR szDefaultHeader [] = {'H','T','T','P','/','1','.','0',' ','2','0','0',' ','O','K',0}
static const WCHAR hostW [] = { 'H','o','s','t',0 }
static const WCHAR szAuthorization [] = { 'A','u','t','h','o','r','i','z','a','t','i','o','n',0 }
static const WCHAR szProxy_Authorization [] = { 'P','r','o','x','y','-','A','u','t','h','o','r','i','z','a','t','i','o','n',0 }
static const WCHAR szStatus [] = { 'S','t','a','t','u','s',0 }
static const WCHAR szKeepAlive [] = {'K','e','e','p','-','A','l','i','v','e',0}
static const WCHAR szGET [] = { 'G','E','T', 0 }
static const WCHAR szHEAD [] = { 'H','E','A','D', 0 }
static const WCHAR szCrLf [] = {'\r','\n', 0}
static const WCHAR szAccept [] = { 'A','c','c','e','p','t',0 }
static const WCHAR szAccept_Charset [] = { 'A','c','c','e','p','t','-','C','h','a','r','s','e','t', 0 }
static const WCHAR szAccept_Encoding [] = { 'A','c','c','e','p','t','-','E','n','c','o','d','i','n','g',0 }
static const WCHAR szAccept_Language [] = { 'A','c','c','e','p','t','-','L','a','n','g','u','a','g','e',0 }
static const WCHAR szAccept_Ranges [] = { 'A','c','c','e','p','t','-','R','a','n','g','e','s',0 }
static const WCHAR szAge [] = { 'A','g','e',0 }
static const WCHAR szAllow [] = { 'A','l','l','o','w',0 }
static const WCHAR szCache_Control [] = { 'C','a','c','h','e','-','C','o','n','t','r','o','l',0 }
static const WCHAR szConnection [] = { 'C','o','n','n','e','c','t','i','o','n',0 }
static const WCHAR szContent_Base [] = { 'C','o','n','t','e','n','t','-','B','a','s','e',0 }
static const WCHAR szContent_Encoding [] = { 'C','o','n','t','e','n','t','-','E','n','c','o','d','i','n','g',0 }
static const WCHAR szContent_ID [] = { 'C','o','n','t','e','n','t','-','I','D',0 }
static const WCHAR szContent_Language [] = { 'C','o','n','t','e','n','t','-','L','a','n','g','u','a','g','e',0 }
static const WCHAR szContent_Length [] = { 'C','o','n','t','e','n','t','-','L','e','n','g','t','h',0 }
static const WCHAR szContent_Location [] = { 'C','o','n','t','e','n','t','-','L','o','c','a','t','i','o','n',0 }
static const WCHAR szContent_MD5 [] = { 'C','o','n','t','e','n','t','-','M','D','5',0 }
static const WCHAR szContent_Range [] = { 'C','o','n','t','e','n','t','-','R','a','n','g','e',0 }
static const WCHAR szContent_Transfer_Encoding [] = { 'C','o','n','t','e','n','t','-','T','r','a','n','s','f','e','r','-','E','n','c','o','d','i','n','g',0 }
static const WCHAR szContent_Type [] = { 'C','o','n','t','e','n','t','-','T','y','p','e',0 }
static const WCHAR szCookie [] = { 'C','o','o','k','i','e',0 }
static const WCHAR szDate [] = { 'D','a','t','e',0 }
static const WCHAR szFrom [] = { 'F','r','o','m',0 }
static const WCHAR szETag [] = { 'E','T','a','g',0 }
static const WCHAR szExpect [] = { 'E','x','p','e','c','t',0 }
static const WCHAR szExpires [] = { 'E','x','p','i','r','e','s',0 }
static const WCHAR szIf_Match [] = { 'I','f','-','M','a','t','c','h',0 }
static const WCHAR szIf_Modified_Since [] = { 'I','f','-','M','o','d','i','f','i','e','d','-','S','i','n','c','e',0 }
static const WCHAR szIf_None_Match [] = { 'I','f','-','N','o','n','e','-','M','a','t','c','h',0 }
static const WCHAR szIf_Range [] = { 'I','f','-','R','a','n','g','e',0 }
static const WCHAR szIf_Unmodified_Since [] = { 'I','f','-','U','n','m','o','d','i','f','i','e','d','-','S','i','n','c','e',0 }
static const WCHAR szLast_Modified [] = { 'L','a','s','t','-','M','o','d','i','f','i','e','d',0 }
static const WCHAR szLocation [] = { 'L','o','c','a','t','i','o','n',0 }
static const WCHAR szMax_Forwards [] = { 'M','a','x','-','F','o','r','w','a','r','d','s',0 }
static const WCHAR szMime_Version [] = { 'M','i','m','e','-','V','e','r','s','i','o','n',0 }
static const WCHAR szPragma [] = { 'P','r','a','g','m','a',0 }
static const WCHAR szProxy_Authenticate [] = { 'P','r','o','x','y','-','A','u','t','h','e','n','t','i','c','a','t','e',0 }
static const WCHAR szProxy_Connection [] = { 'P','r','o','x','y','-','C','o','n','n','e','c','t','i','o','n',0 }
static const WCHAR szPublic [] = { 'P','u','b','l','i','c',0 }
static const WCHAR szRange [] = { 'R','a','n','g','e',0 }
static const WCHAR szReferer [] = { 'R','e','f','e','r','e','r',0 }
static const WCHAR szRetry_After [] = { 'R','e','t','r','y','-','A','f','t','e','r',0 }
static const WCHAR szServer [] = { 'S','e','r','v','e','r',0 }
static const WCHAR szSet_Cookie [] = { 'S','e','t','-','C','o','o','k','i','e',0 }
static const WCHAR szTransfer_Encoding [] = { 'T','r','a','n','s','f','e','r','-','E','n','c','o','d','i','n','g',0 }
static const WCHAR szUnless_Modified_Since [] = { 'U','n','l','e','s','s','-','M','o','d','i','f','i','e','d','-','S','i','n','c','e',0 }
static const WCHAR szUpgrade [] = { 'U','p','g','r','a','d','e',0 }
static const WCHAR szURI [] = { 'U','R','I',0 }
static const WCHAR szUser_Agent [] = { 'U','s','e','r','-','A','g','e','n','t',0 }
static const WCHAR szVary [] = { 'V','a','r','y',0 }
static const WCHAR szVia [] = { 'V','i','a',0 }
static const WCHAR szWarning [] = { 'W','a','r','n','i','n','g',0 }
static const WCHAR szWWW_Authenticate [] = { 'W','W','W','-','A','u','t','h','e','n','t','i','c','a','t','e',0 }
static struct list basicAuthorizationCache = LIST_INIT(basicAuthorizationCache)
static struct list authorizationCache = LIST_INIT(authorizationCache)
static CRITICAL_SECTION authcache_cs = { &critsect_debug, -1, 0, 0, 0, 0 }
static CRITICAL_SECTION_DEBUG critsect_debug
static CRITICAL_SECTION connection_pool_cs = { &connection_pool_debug, -1, 0, 0, 0, 0 }
static CRITICAL_SECTION_DEBUG connection_pool_debug
static struct list connection_pool = LIST_INIT(connection_pool)
static BOOL collector_running
static const signed char HTTP_Base64Dec [256]
static const data_stream_vtbl_t netconn_stream_vtbl
static const data_stream_vtbl_t chunked_stream_vtbl
static const object_vtbl_t HTTPREQVtbl
static const LPCWSTR header_lookup []
static const object_vtbl_t HTTPSESSIONVtbl

Generated on Mon May 28 2012 05:20:06 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.