aboutsummaryrefslogtreecommitdiff
path: root/lib/transfer.c
AgeCommit message (Collapse)Author
2006-11-25Venkat Akella found out that libcurl did not like HTTP responses that simplyDaniel Stenberg
responded with a single status line and no headers nor body. Starting now, a HTTP response on a persistent connection (i.e not set to be closed after the response has been taken care of) must have Content-Length or chunked encoding set, or libcurl will simply assume that there is no body. To my horror I learned that we had no less than 57(!) test cases that did bad HTTP responses like this, and even the test http server (sws) responded badly when queried by the test system if it is the test system. So although the actual fix for the problem was tiny, going through all the newly failing test cases got really painful and boring.
2006-11-25James Housley fixed SCP downloading by setting the maxdownload.Daniel Stenberg
2006-10-25Fixed CURLOPT_FAILONERROR to return CURLE_HTTP_RETURNED_ERROR even for theDaniel Stenberg
case when 401 or 407 are returned, *IF* no auth credentials have been given. The CURLOPT_FAILONERROR option is not possible to make fool-proof for 401 and 407 cases when auth credentials is given, but we've now covered this somewhat more. You might get some amounts of headers transferred before this situation is detected, like for when a "100-continue" is received as a response to a POST/PUT and a 401 or 407 is received immediately afterwards. Added test 281 to verify this change.
2006-10-23Ravi Pratap provided a major update with pipelining fixes. We also no longerDaniel Stenberg
re-use connections (for pipelining) before the name resolving is done.
2006-10-20Compiler warning fixYang Tse
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-11Remove redundant __CYGWIN__ symbol checkYang Tse
2006-09-30Support for FTP third party transfers is now droppedDaniel Stenberg
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-22David McCreedy fixed a remaining mistake from the August 19 TYPE change.Daniel Stenberg
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-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-07-31Silence warning: empty body in an if-statementYang Tse
2006-07-25Georg Horn made the transfer timeout error message include more detailsDaniel Stenberg
2006-06-22Peter Silva introduced CURLOPT_MAX_SEND_SPEED_LARGE andDaniel Stenberg
CURLOPT_MAX_RECV_SPEED_LARGE that limit tha maximum rate libcurl is allowed to send or receive data. This kind of adds the the command line tool's option --limit-rate to the library. The rate limiting logic in the curl app is now removed and is instead provided by libcurl itself. Transfer rate limiting will now also work for -d and -F, which it didn't before.
2006-06-15select_res is not a socket, it should be a plain intDaniel Stenberg
2006-06-09oops, serious breakage in the fdset() functionDaniel Stenberg
2006-04-26David McCreedy brought line end conversions when doing FTP ASCIIDaniel Stenberg
transfers. They are done on non-windows systems and translate CRLF to LF.
2006-04-10First curl_multi_socket() commit. Should primarily be considered as an internalDaniel Stenberg
code rearrange to fit the future better.
2006-04-07First commit of David McCreedy's EBCDIC and TPF changes.Daniel Stenberg
2006-03-28#1451929 (http://curl.haxx.se/bug/view.cgi?id=1451929) detailed a bug thatDaniel Stenberg
occurred when asking libcurl to follow HTTP redirects and the original URL had more than one question mark (?). Added test case 276 to verify.
2006-02-19Shmulik Regev fixed an issue with multi-pass authentication and compressedDaniel Stenberg
content when libcurl didn't honor the internal ignorebody flag.
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-02-07Philippe Vaucher provided a brilliant piece of test code that show a problemDaniel Stenberg
with re-used FTP connections. If the second request on the same connection was set not to fetch a "body", libcurl could get confused and consider it an attempt to use a dead connection and would go acting mighty strange.
2006-01-30Based on an error report by Philippe Vaucher, we no longer count a retriedDaniel Stenberg
connection setup as a follow-redirect. It turns out 1) this fails when a FTP connection is re-setup and 2) it does make the max-redirs counter behave wrong. This fix was not verified since the reporter vanished, but I believe this is the right fix nonetheless.
2005-11-24Doug Kaufman's set of patches to make curl build fine on DJGPP again usingDaniel Stenberg
configure.
2005-11-18fix compiler warningDaniel Stenberg
2005-11-17I extended a patch from David Shaw to make libcurl _always_ provide an errorDaniel Stenberg
string in the given error buffer to address the flaw mention on 21 sep 2005.
2005-10-27Nis Jorgensen filed bug report #1338648Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1338648) which really is more of a feature request, but anyway. It pointed out that --max-redirs did not allow it to be set to 0, which then would return an error code on the first Location: found. Based on Nis' patch, now libcurl supports CURLOPT_MAXREDIRS set to 0, or -1 for infinity. Added test case 274 to verify.
2005-09-27An anonymous submitter filed bug #1299181Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1299181) that identified a silly problem with Content-Range: headers with the 'bytes' keyword written in a different case than all lowercase! It would cause a segfault!
2005-09-21return an error string for the missing URL caseDaniel Stenberg
2005-08-24Toby Peterson added CURLOPT_IGNORE_CONTENT_LENGTH to the library, accessibleDaniel Stenberg
from the command line tool with --ignore-content-length. This will make it easier to download files from Apache 1.x (and similar) servers that are still having problems serving files larger than 2 or 4 GB. When this option is enabled, curl will simply have to wait for the server to close the connection to signal end of transfer. I wrote test case 269 that runs a simple test that this works.
2005-08-17- Jeff Pohlmeyer found out that if you ask libcurl to load a cookiefile (withDaniel Stenberg
CURLOPT_COOKIEFILE), add a cookie (with CURLOPT_COOKIELIST), tell it to write the result to a given cookie jar and then never actually call curl_easy_perform() - the given file(s) to read was never read but the output file was written and thus it caused a "funny" result. - While doing some tests for the bug above, I noticed that Firefox generates large numbers (for the expire time) in the cookies.txt file and libcurl didn't treat them properly. Now it does.
2005-08-13James Bursa identified a libcurl HTTP bug and a good way to repeat it. If aDaniel Stenberg
site responds with bad HTTP response that doesn't contain any header at all, only a response body, and the write callback returns 0 to abort the transfer, it didn't have any real effect but the write callback would be called once more anyway.
2005-07-12Adrian Schuur added trailer support in the chunked encoding stream. TheDaniel Stenberg
trailer is then sent to the normal header callback/stream.
2005-05-29Eric Cooper reported about a problem with HTTP servers that responds withDaniel Stenberg
binary zeroes within the headers. They confused libcurl to do wrong so the downloaded headers become incomplete. The fix is now verified with test case 262.
2005-05-10Hm, this doesn't feel right. The error bits returned from Curl_select() canDaniel Stenberg
be returned at times when we want to ignore them. Test case 160 fails on Linux, so I modify the comparison to check for _only_ the error bit set...
2005-05-10me stupid, errno is not set for mere select()-exceptionsDaniel Stenberg
2005-05-10include protos to fix warningsDaniel Stenberg
2005-05-10If Curl_select() returns with the error bit set, bail out.Daniel Stenberg
2005-04-30there cannot be chunked problem when no_body (HEAD) is true since withoutDaniel Stenberg
body there is nothing chunked-encoded!
2005-04-26Cory Nelson's work on nuking compiler warnings when building on x64 withDaniel Stenberg
VS2005.
2005-04-08fixed the 304 response-with-content-length problem reported by Cory NelsonDaniel Stenberg
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-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.