Commit Graph

260 Commits

Author SHA1 Message Date
Hans Leidekker 4d84eb26d0 wininet: Fix handling of host and referrer headers in HttpOpenRequest. 2008-01-07 12:02:12 +01:00
Marcus Meissner fe475d9e88 wininet: Check return value of InternetCrackUrl when checking referrer host. 2008-01-03 13:30:26 +01:00
Rob Shearman 01826e0c98 wininet: Don't clear the auth data for Basic authentication in HTTP_InsertAuthorizationForHeader.
It isn't tracked per connection, unlike NTLM authentication, and so the 
server will return a 401 error and try to get us to authenticate again. 
However, this doesn't work as the authentication information is assumed 
by the code to be valid for the whole connection.
2007-11-27 16:42:26 +01:00
Juan Lang 9adf83e90d wininet: Don't use HEAP_ZERO_MEMORY on memory that's fully initialized. 2007-11-08 12:18:31 +01:00
Juan Lang a1ab4a7eff wininet: Fix another typo. 2007-11-08 12:18:30 +01:00
Juan Lang b210e3a751 wininet: Fix typo. 2007-11-08 12:18:30 +01:00
Nigel Liang 6f44627b04 wininet: Release object in HttpSendRequestExW before return on error. 2007-11-05 15:05:16 +01:00
Hans Leidekker 64359c2432 wininet: Always send a content length header, even if there is no content. 2007-10-29 13:06:50 +01:00
Juan Lang d857c04c95 wininet: Don't assume lpBuffersIn is not NULL. 2007-10-23 12:23:52 +02:00
Nigel Liang 7d2ac2039b wininet: Release object in HttpEndRequestW after use. 2007-10-18 13:21:28 +02:00
Misha Koshelev 728e5fa559 wininet: Track child handles, free all child handles on WININET_FreeHandle as native. 2007-09-21 11:53:04 +02:00
Francois Gouget d4337f2b5e wininet: Fix many wininet prototypes: the context is a DWORD_PTR now. 2007-08-30 17:02:49 +02:00
Misha Koshelev 0f117e568f wininet: Separate connection closing from object destruction. 2007-08-23 13:13:24 +02:00
Misha Koshelev 5320d3e3ea wininet: Don't send INTERNET_STATUS_HANDLE_CLOSING when closing handle opened with InternetOpen for HTTP connection. 2007-08-22 12:18:59 +02:00
Mikołaj Zalewski 3fa49f0f02 wininet: Make HttpQueryInfo[AW] work for lpBuffer == NULL and len > 0. 2007-08-16 11:52:06 +02:00
Mikołaj Zalewski ab7d17727c wininet: Support HTTP_QUERY_RAW_HEADER_CRLF|HTTP_QUERY_FLAG_REQUEST_HEADERS. 2007-08-16 11:51:52 +02:00
Hans Leidekker bb9413d77a wininet: Process caller supplied headers after inserting connection and authorization headers, not before. 2007-08-10 12:58:17 +02:00
Aric Stewart c8dfc02bfb wininet: Strip Accept-Encoding from http/1.0 requests. 2007-07-27 12:47:51 +02:00
Rob Shearman cb28969c2a wininet: Implement NTLM support for proxy authentication. 2007-06-06 12:11:34 +02:00
Jeremy White 7ad691a5ee wininet: Mark Proxy Authorization header as a request header, so it actually gets sent. 2007-06-01 12:40:22 +02:00
Rob Shearman 76507d475b wininet: Don't close the connection if the caller passes in zero for the number of bytes to be read.
Only close the connection when the bytes read equals the content length.

Fixup HTTP_DrainContent, which relied on the previous incorrect 
behaviour to instead close connections with no content length manually.
2007-05-29 13:49:02 +02:00
Rob Shearman 2e21d090cb wininet: Cope with non-nul-terminated header strings being passed to HttpSendRequestW. 2007-05-29 13:44:36 +02:00
Rob Shearman 4d1b8b1a4e wininet: Fix basic authentication by putting Basic directing into the scheme field, as the pszAuthValue can have an optional realm string appended. 2007-05-29 13:44:35 +02:00
Andrew Talbot 8ee390f6f5 wininet: Exclude unused headers. 2007-05-29 12:10:17 +02:00
Rob Shearman 7b94871c9f wininet: Pass context to InitializeSecurityContext in second parameter.
Otherwise, the call will now fail with SEC_E_INVALID_HANDLE.
2007-05-29 11:54:42 +02:00
Rob Shearman 847cc51d3b wininet: Implement basic non-proxy authentication. 2007-05-21 16:52:21 +02:00
Rob Shearman 4b507685e8 wininet: Add support for SSPI authentication for HTTP. 2007-05-21 16:52:10 +02:00
Andrew Talbot 46fc9c2e11 wininet: Constify some variables. 2007-02-26 13:38:37 +01:00
Hans Leidekker 2024f68753 wininet: Skip empty accept type strings in HttpOpenRequest. 2007-02-13 11:50:01 +01:00
Francois Gouget aab5e5856e Don't put single quotes around '%s' when using the debugstr_*() functions. 2007-01-18 12:55:50 +01:00
Rob Shearman 1ec14b0b25 wininet: Fix HTTP_EncodeBasicAuth by passing an out buffer to the second set of character set conversion calls. 2007-01-17 11:24:09 +01:00
Rob Shearman a9ebc706e3 wininet: Change HTTP_EncodeBase64 to operate on a series of bytes, instead of text.
Change HTTP_EncodeBasicAuth to convert the username and password into 
utf8 before base64 encoding.
2007-01-15 12:31:11 +01:00
Rob Shearman 9efe083ec5 wininet: HTTP_HttpQueryInfoW deals with bytes, not characters so update the callers that have this wrong assumption. 2007-01-15 12:30:53 +01:00
Rob Shearman 7b002a39b8 wininet: Allow a NULL value to be passed into HTTP_ProcessHeader
instead of crashing so that when used with the replace flag it will
delete an existing value.
2007-01-15 12:30:46 +01:00
Francois Gouget e66d1cd5e9 wininet: Consistenly use INTERNET_SetLastError(). 2007-01-10 11:58:47 +01:00
Rob Shearman 47a8b86b53 wininet: Use Keep-Alive for HTTP requests if specified by the flags passed into HttpOpenRequest. 2007-01-08 12:39:50 +01:00
Rob Shearman a9c2cfa8d9 wininet: Fix the handling of Accept types passed into HttpOpenRequest
by properly coalescing all the types into the Accept header value,
rather than just adding the first.
2007-01-08 12:39:47 +01:00
Rob Shearman 7e8ef764b8 wininet: Rename HTTP_Base64 to HTTP_EncodeBase64 to more accurately reflect what it does. 2007-01-08 12:39:42 +01:00
Rob Shearman 06b19b018a wininet: Fix the releasing of the wrong reference count in HTTP_CloseHTTPRequestHandle.
lpwhr obviously already has a reference count of 0 because it is being destroyed.
2007-01-04 21:17:53 +01:00
Rob Shearman 272954bd81 wininet: Change the HTTP code to not assume that the connection will be closed at the end of every request. 2007-01-04 21:17:34 +01:00
Rob Shearman f0163ae7d6 wininet: Don't send callbacks in HTTP_CloseConnection if not connected. 2007-01-04 21:17:19 +01:00
Rob Shearman ac1b527498 wininet: Use the Content-Length header to work out how much HTTP data there is left to be read
and don't try to read any more than what is available.
2007-01-04 21:17:12 +01:00
Rob Shearman cf43b16036 wininet: Always send a Connection header set to "close" because that is what we expect for the moment. 2007-01-04 21:16:38 +01:00
Rob Shearman 14fb418942 wininet: Fix HTTP redirects by reseting loop_next after one loop. 2007-01-04 21:14:54 +01:00
Jacek Caban 49f5ee746c wininet: Get rid of ASYNC_FUNC enum. 2006-12-26 12:50:19 +01:00
Jacek Caban c156845560 wininet: Use proc instead of enum in HTTPSENDREQUESTW request. 2006-12-26 12:48:09 +01:00
Rob Shearman 72575a06ca wininet: Make a function for resolving the server name for an HTTP request
and sending the appropriate callbacks and use it to remove some duplicated code.
2006-12-07 11:42:51 +01:00
Rob Shearman 4319ec6b83 wininet: Make HTTP_HandleRedirect no longer call HTTP_HttpSendRequestW.
Make the redirect handling in HTTP_HttpSendRequestW iterate instead of recurse.
2006-12-07 11:42:38 +01:00
Jacek Caban 1031c5f9c6 wininet: Revert commit 760043c245.
After more testing I've checked that current code is bad, but my patch
was also wrong and causes regression in WoW.
2006-11-02 21:01:05 +01:00
Jacek Caban 5c53baac8d wininet: Inherit INET_CALLBACKW from parent handler. 2006-10-31 11:46:49 +01:00
Jacek Caban 760043c245 wininet: Call SendCallback in destructor instead of InternetCloseHandle. 2006-10-30 11:36:16 +01:00
Jacek Caban 957516f8e6 wininet: Remove lpwhparent from WININETHANDLERHEADER. 2006-10-30 11:36:02 +01:00
Jacek Caban 61a1cef6f6 wininet: Use lpHttpSession instead of lpwhcalback where possible. 2006-10-30 11:34:58 +01:00
Jacek Caban a9bdc01e19 wininet: Store pointer to WININETHTTPSESSIONW in WININETHTTPREQUESTW. 2006-10-30 11:34:51 +01:00
Jacek Caban a541a44f51 wininet: Use lpAppInfo instead of lpwhparent where possible. 2006-10-30 11:34:41 +01:00
Jacek Caban c250617d88 wininet: Store WININETAPPINFOW pointer in WININETHTTPSESSIONW. 2006-10-30 11:34:21 +01:00
Jacek Caban cc7a86ec7e wininet: Use HTTP_ADDHDR_FLAG_REPLACE flag in HTTP_HttpSendRequest to add Content-Length header. 2006-10-23 12:28:58 +02:00
Hans Leidekker 781f3f78a0 wininet: Cast-qual warnings fix. 2006-10-14 20:16:49 +02:00
Hans Leidekker cd2c458588 wininet: Win64 printf format warning fixes. 2006-10-05 17:45:14 +02:00
Mike McCormack 739cd1ea32 wininet: Don't crash when querying NULL values. 2006-05-30 19:29:52 +02:00
Andrew Ziem 7053321926 wininet: Constify data. 2006-05-25 11:01:06 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Mike McCormack 746bf215e0 wininet: Remove broken code for HTTP_QUERY_FLAG_COALESCE, which is unimplemented according to MSDN. 2006-05-15 11:04:50 +02:00
Mike McCormack 92ddc1c851 wininet: Clean up HTTP_GetCustomHeaderIndex. 2006-03-30 12:41:04 +02:00
Mike McCormack 7f5e273214 wininet: Use a lookup table sorted by index so we don't need a loop to do lookups. 2006-03-30 12:40:47 +02:00
Mike McCormack ae300883fa WININET: Clean up HttpQueryInfo.
Fixes another return FALSE without SetLastError.
2006-03-30 12:40:05 +02:00
Mike McCormack 2571fa004a wininet: Make sure to set LastError when returning FALSE in HttpQueryInfo. 2006-03-30 12:38:14 +02:00
Robert Shearman 80e4fb5975 wininet: InternetCreateUrlW should return the number of bytes needed.
InternetCreateUrlW should return the number of bytes needed to store
the URL, not the number of characters (reported by Sven Paschukat).
2006-03-21 16:19:06 +01:00
Robert Shearman ef20936c53 wininet: Don't duplicate empty strings. 2006-03-10 21:40:57 +01:00
Robert Shearman 0590025e3c wininet: Fix redirects with relative URIs instead of absolute URIs. 2006-03-09 22:45:18 +01:00
Robert Shearman 9981f337e3 wininet: Don't continue to connect to a secure server without SSL support since it won't work.
Don't continue to connect to a secure server without SSL support since
it won't work. Return an error back to the application instead.
2006-03-06 20:00:21 +01:00
Robert Shearman 7a2357a480 wininet: Documentation fixes. 2006-02-14 11:34:14 +01:00
Aric Stewart 21712d3d15 wininet: Handle NULL lpBuffersIn in HttpSendRequestExW. 2006-01-13 13:52:38 +01:00
Jacek Caban ad02317248 wininet: lpvStatusInfo in INTERNET_STATUS_NAME_RESOLVED,
INTERNET_STATUS_CONNECTING_TO_SERVER and
INTERNET_STATUS_CONNECTED_TO_SERVER should be strings, not
sockaddr_in.
2006-01-05 14:37:06 +01:00
Aric Stewart 1e946d3e14 wininet: HTTP headers reworking.
Redo how headers are handled, eliminating the concept of Standard
Headers and allow all headers to be added multiple times.
Allow querying of headers with an index to get the multiple headers.
Respect response vs request headers in HttpQueryInfo.
Add a number of tests to extensively test header adding and replacing.
2005-12-13 17:07:41 +01:00
Marcus Meissner 73893a74fd wininet: Reinitialise NETCON on redirect. 2005-12-13 11:12:09 +01:00
Aric Stewart 7bca41a739 wininet: Handle HTTP_QUERY_CUSTOM.
In HttpQueryInfo if dwInfoLevel includes HTTP_QUERY_CUSTOM then
lpBuffer is In/Out because the header we are querying is there.
Additionally standard headers can be queried in this manner as well
(such as Set-Cookie).
2005-12-08 12:44:45 +01:00
Aric Stewart d30cec77d3 wininet: A->W bugfix.
When converting SendRequestExA -> W we need to set the lpcszHeader
parameter to NULL if the original one is NULL.
2005-12-08 11:54:24 +01:00
Robert Shearman efd067f2c3 wininet: Correctly set the last error when a called Unix network
function fails.
2005-12-03 18:10:14 +01:00
Robert Shearman 067f09604a wininet: global function/data cleanup
Make some functions and a structure static since they are only used in
one file.
2005-12-03 18:03:08 +01:00
Robert Shearman f6252cf43e Remove duplicated code by modifying HTTP_HttpSendRequest so that it
can be used by both HttpSendRequest and HttpSendRequestEx.
Also allow HttpSendRequestEx to be used asynchronously.
2005-11-30 12:31:22 +01:00
Robert Shearman dc5f1cbd5d Remove call to StrCatW by passing in NULL for lpszExtraInformation in
the call to InternetCrackUrl, which concatenates the params onto the
path.
Some other minor cleanups.
2005-11-30 12:01:50 +01:00
Robert Shearman 4350357634 HttpSendRequestExA/W doesn't touch lpBuffersIn->Next, so simplify the
code a bit.
Modify test case to demonstrate this.
2005-11-29 11:42:23 +01:00
Robert Shearman 8a8ce9c4c7 More lpszServerName -> lpszHostName fixes. 2005-11-29 11:35:19 +01:00
Robert Shearman efac01b525 Fix redirects from secure to non-secure and vice versa. 2005-11-29 11:25:31 +01:00
Robert Shearman de2666fd5f Change all SendAsyncCallback calls into the synchronous
INTERNET_SendCallback where INTERNET_FLAG_ASYNC is already handled
properly.
2005-11-29 10:44:05 +01:00
Aric Stewart 1fc760d4a7 Allow HttpEndRequest to process 302 and 301 redirects. Append Host
port if non standard on the redirect host header and make sure to
append the extra information (parameters) and such to the location if
present.  Additionally check to see if we are redirecting to https and
if so set the appropriate port.
2005-11-28 17:31:02 +01:00
Robert Shearman 0e7c41e979 Add support for using secure (SSL/TLS) connections through a proxy
server.
2005-11-28 11:55:16 +01:00
Robert Shearman 13d371da54 Move the initiation of the SSL connection into a separate function. 2005-11-28 11:54:31 +01:00
Robert Shearman 3592110af7 Add a host port field that preserves the requested port of the
destination URL.
2005-11-28 11:53:05 +01:00
Robert Shearman cc44f3a5c7 Fix "http://" prefix detection on the proxy URL. 2005-11-28 11:31:11 +01:00
Robert Shearman 0adec2b3dc Replace some useless checks in HTTP_AddProxyInfo with asserts. 2005-11-28 11:28:06 +01:00
Robert Shearman 225a9facd4 Simplify and fix Set-Cookie handling. 2005-11-28 11:24:41 +01:00
Robert Shearman 22edb3e99e Simplify HTTP_InsertProxyAuthorization. 2005-11-28 11:17:06 +01:00
Robert Shearman 29a436fd87 Add parsing of the Content-ID and Proxy-Connection headers.
Sort the table of header to option number mappings correctly.
Change a FIXME to a WARN because there are "X-..." headers that we
aren't supposed to parse.
2005-11-28 11:00:05 +01:00
Robert Shearman 7bb3463166 Add a new field "lpszHostName" to the session to track the host name
of the HTTP server, as opposed to the server that we will connect to
that could be a proxy server. Fixes the "Host:" header that we send to
servers.
2005-11-28 10:40:42 +01:00
Aric Stewart ed0eba24f9 HttpEndRequest does not actually send an extra NULL byte at the end of
the request. Help from Rob Shearman on this one.
2005-11-22 16:18:48 +00:00
Aric Stewart 9e68c651d6 Fix some logic to allow HTTP_ADDREQ_FLAG_ADD to replace existing
headers. Also adding a test for some header adding flags.
2005-11-22 14:53:30 +00:00
Robert Shearman b27457c91c Fix an incorrect entry in the HTTP header field table causing broken
Location field parsing.
2005-11-22 11:58:50 +00:00
Aric Stewart be918f48b6 Implement HttpSendRequestEx and HttpEndRequest. Restructure, breaking
some things out of HTTP_SendRequestW to avoid duplicate code.
2005-11-21 15:17:55 +00:00