aboutsummaryrefslogtreecommitdiff
path: root/lib/http.c
AgeCommit message (Collapse)Author
2007-02-05- Michael Wallner provided a patch that adds support for CURLOPT_TIMEOUT_MSDaniel Stenberg
and CURLOPT_CONNECTTIMEOUT_MS that, as their names should hint, do the timeouts with millisecond resolution instead. The only restriction to that is the alarm() (sometimes) used to abort name resolves as that uses full seconds. I fixed the FTP response timeout part of the patch. Internally we now count and keep the timeouts in milliseconds but it also means we multiply set timeouts with 1000. The effect of this is that no timeout can be set to more than 2^31 milliseconds (on 32 bit systems), which equals 24.86 days. We probably couldn't before either since the code did *1000 on the timeout values on several places already.
2007-01-29- Michael Wallner reported that when doing a CONNECT with a custom User-AgentDaniel Stenberg
header, you got _two_ User-Agent headers in the CONNECT request...! Added test case 287 to verify the fix.
2007-01-24bail out on strdup() errorsDaniel Stenberg
2007-01-16- Armel Asselin improved libcurl to behave a lot better when an easy handleDaniel Stenberg
doing an FTP transfer is removed from a multi handle before completion. The fix also fixed the "alive counter" to be correct on "premature removal" for all protocols.
2007-01-14- David McCreedy provided libcurl changes for doing HTTP communication onDaniel Stenberg
non-ASCII platforms. It does add some complexity, most notably with more #ifdefs, but I want to see this supported added and I can't see how we can add it without the extra stuff added.
2007-01-03- David McCreedy made changes to allow base64 encoding/decoding to work onDaniel Stenberg
non-ASCII platforms.
2006-12-21Robson Braga Araujo reported bug #1618359Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1618359) and subsequently provided a patch for it: when downloading 2 zero byte files in a row, curl 7.16.0 enters an infinite loop, while curl 7.16.1-20061218 does one additional unnecessary request. Fix: During the "Major overhaul introducing http pipelining support and shared connection cache within the multi handle." change, headerbytecount was moved to live in the Curl_transfer_keeper structure. But that structure is reset in the Transfer method, losing the information that we had about the header size. This patch moves it back to the connectdata struct.
2006-12-15Fix typo.Gisle Vanem
2006-11-03Olaf Stueben provided a patch that I edited slightly. It fixes the notoriousDaniel Stenberg
KNOWN_BUGS #25, which happens when a proxy closes the connection when libcurl has sent CONNECT, as part of an authentication negotiation. Starting now, libcurl will re-connect accordingly and continue the authentication as it should.
2006-10-17Avoid typecasting a signed char to an int when using is*() functions, as thatDaniel Stenberg
could very well cause a negate number get passed in and thus cause reading outside of the array usually used for this purpose. We avoid this by using the uppercase macro versions introduced just now that does some extra crazy typecasts to avoid byte codes > 127 to cause negative int values.
2006-10-17Explicit typecast for Curl_debug() size argumentYang Tse
2006-10-17Compiler warning fixYang Tse
2006-10-15Compiler warning fixYang Tse
2006-10-13The tagging of application/x-www-form-urlencoded POST body data sentDan Fandrich
to the CURLOPT_DEBUGFUNCTION callback has been fixed (it was erroneously included as part of the header). A message was also added to the command line tool to show when data is being sent, enabled when --verbose is used.
2006-10-11Remove redundant __CYGWIN__ symbol checkYang Tse
2006-09-12Compiler warning fixYang Tse
2006-09-10Compiler warning fixYang Tse
2006-09-07Major overhaul introducing http pipelining support and shared connectionDaniel Stenberg
cache within the multi handle.
2006-09-03Simplified #ifdef on WIN32; the statementGisle Vanem
" !defined(__GNUC__) || defined(__MINGW32__)" implies CygWin.
2006-08-30Removed "#ifndef__WATCOMC__". Use "#ifdef HAVE_SYS_TIME_H" instead.Gisle Vanem
2006-08-29Watcom lacks <sys/time.h>.Gisle Vanem
2006-08-19Based on a patch by Armel Asselin, the FTP code no longer re-issues the TYPEDaniel Stenberg
command on subsequent requests on a re-used connection unless it has to.
2006-08-18Andrew Biggs pointed out a "Expect: 100-continue" flaw where libcurl didn'tDaniel Stenberg
send the whole request at once, even though the Expect: header was disabled by the application. An effect of this change is also that small (< 1024 bytes) POSTs are now always sent without Expect: header since we deem it more costly to bother about that than the risk that we send the data in vain.
2006-08-08Fixed a flaw in the "Expect: 100-continue" treatment. If you did two POSTsDaniel Stenberg
on a persistent connection and allowed the first to use that header, you could not disable it for the second request.
2006-08-02Mark Lentczner fixed how libcurl was not properly doing chunked encodingDaniel Stenberg
if the header "Transfer-Encoding: chunked" was set by the application. http://curl.haxx.se/bug/view.cgi?id=1531838
2006-07-27Yves Lejeune fixed so that replacing Content-Type: when doing multipartDaniel Stenberg
formposts work exactly the way you want it (and the way you'd assume it works)
2006-07-19remove variable declaration shadowing previously declared oneYang Tse
2006-07-19Remove variable declaration shadowing previously declared oneYang Tse
2006-07-04Toshiyuki Maezawa fixed a problem where you couldn't override theDaniel Stenberg
Proxy-Connection: header when using a proxy and not doing CONNECT.
2006-05-05Curl_https_getsock() was OpenSSL-specific and really should not be presentDaniel Stenberg
like this in this source file. The quickfix for now is to provide a simple version for GnuTLS builds. The GnuTLS version of libcurl doesn't yet allow fully non-blocking connects anyway so this function doesn't get used.
2006-05-04Roland Blom filed bug report #1481217Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1481217), with follow-ups by Michele Bini and David Byron. libcurl previously wrongly used GetLastError() on windows to get error details after socket-related function calls, when it really should use WSAGetLastError() instead. When changing to this, the former function Curl_ourerrno() is now instead called Curl_sockerrno() as it is necessary to only use it to get errno from socket-related functions as otherwise it won't work as intended on Windows.
2006-04-10First curl_multi_socket() commit. Should primarily be considered as an internalDaniel Stenberg
code rearrange to fit the future better.
2006-03-21Xavier Bouchoux made the SSL connection non-blocking for the multi interfaceDaniel Stenberg
(when using OpenSSL).
2006-02-11Karl M added the CURLOPT_CONNECT_ONLY and CURLINFO_LASTSOCKET options thatDaniel Stenberg
an app can use to let libcurl only connect to a remote host and then extract the socket from libcurl. libcurl will then not attempt to do any transfer at all after the connect is done.
2006-01-09Made the copyright year match the latest modification's year.Daniel Stenberg
2006-01-07Mike Jean fixed so that the second CONNECT when doing FTP over a HTTP proxyDaniel Stenberg
actually used a new connection and not sent the second request on the first socket!
2005-10-20Dave Dribin made libcurl understand and handle cases when the serverDaniel Stenberg
(wrongly) sends *two* WWW-Authenticate headers for Digest. While this should never happen in a sane world, libcurl previously got into an infinite loop when this occurred. Dave added test 273 to verify this.
2005-07-05correction for the 407 with response-body caseDaniel Stenberg
2005-07-03Andrew Bushnell provided enough info for me to tell that we badly needed toDaniel Stenberg
fix the CONNECT authentication code with multi-pass auth methods (such as NTLM) as it didn't previously properly ignore response-bodies - in fact it stopped reading after all response headers had been received. This could lead to libcurl sending the next request and reading the body from the first request as response to the second request. (I also renamed the function, which wasn't strictly necessary but...) The best fix would to once and for all make the CONNECT code use the ordinary request sending/receiving code, treating it as any ordinary request instead of the special-purpose function we have now. It should make it better for multi-interface too. And possibly lead to less code... Added test case 265 for this. It doesn't work as a _really_ good test case since the test proxy is too stupid, but the test case helps when running the debugger to verify.
2005-05-11Modified the default HTTP headers used by libcurl:Daniel Stenberg
A) Normal non-proxy HTTP: - no more "Pragma: no-cache" (this only makes sense to proxies) B) Non-CONNECT HTTP request over proxy: - "Pragma: no-cache" is used (like before) - "Proxy-Connection: Keep-alive" (for older style 1.0-proxies) C) CONNECT HTTP request over proxy: - "Host: [name]:[port]" - "Proxy-Connection: Keep-alive"
2005-04-25Fred New reported a bug where we used Basic auth and user name and password inDaniel Stenberg
.netrc, and when following a Location: the subsequent requests didn't properly use the auth as found in the netrc file. Added test case 257 to verify my fix.
2005-04-18Toshiyuki Maezawa reported that when doing a POST with a read callback,Daniel Stenberg
libcurl didn't properly send an Expect: 100-continue header. It does now.
2005-04-07GnuTLS support added. There's now a "generic" SSL layer that we use all overDaniel Stenberg
internally, with code provided by sslgen.c. All SSL-layer-specific code is then written in ssluse.c (for OpenSSL) and gtls.c (for GnuTLS). As far as possible, internals should not need to know what SSL layer that is in use. Building with GnuTLS currently makes two test cases fail. TODO.gnutls contains a few known outstanding issues for the GnuTLS support. GnuTLS support is enabled with configure --with-gnutls
2005-04-03Hardeep Singh reported a problem doing HTTP POST with Digest. (It was actuallyDaniel Stenberg
also affecting NTLM and Negotiate.) It turned out that if the server responded with 100 Continue before the initial 401 response, libcurl didn't take care of the response properly. Test case 245 and 246 added to verify this.
2005-03-29Don't close the connection if we're in a known negotiation mode and we won'tDaniel Stenberg
send any data anyway. Probably the bug Tom Moers noticed.
2005-03-28Based on Augustus Saunders' comments and findings, the HTTP output authDaniel Stenberg
function was fixed to use the proper proxy authentication when multiple ones were added as accepted. test 239 and test 243 were added to repeat the problems and verify the fixes.
2005-03-10Christopher R. Palmer made it possible to build libcurl with theDaniel Stenberg
USE_WINDOWS_SSPI on Windows, and then libcurl will be built to use the native way to do NTLM. SSPI also allows libcurl to pass on the current user and its password in the request.
2005-02-18Ralph Mitchell reported a flaw when you used a proxy with auth, and youDaniel Stenberg
requested data from a host and then followed a redirect to another host. libcurl then didn't use the proxy-auth properly in the second request, due to the host-only check for original host name wrongly being extended to the proxy auth as well. Added test case 233 to verify the flaw and that the fix removed the problem.
2005-02-16Christopher R. Palmer reported a problem with HTTP-POSTing using "anyauth"Daniel Stenberg
that picks NTLM. Thanks to David Byron letting me test NTLM against his servers, I could quickly repeat and fix the problem. It turned out to be: When libcurl POSTs without knowing/using an authentication and it gets back a list of types from which it picks NTLM, it needs to either continue sending its data if it keeps the connection alive, or not send the data but close the connection. Then do the first step in the NTLM auth. libcurl didn't send the data nor close the connection but simply read the response-body and then sent the first negotiation step. Which then failed miserably of course. The fixed version forces a connection if there is more than 2000 bytes left to send.
2005-02-11Removed all uses of strftime() since it uses the localised version of theDaniel Stenberg
week day names and month names and servers don't like that.