aboutsummaryrefslogtreecommitdiff
path: root/lib/ftp.c
AgeCommit message (Collapse)Author
2008-08-16Library internal only C preprocessor macros FORMAT_OFF_T and FORMAT_OFF_TUYang Tse
remain in use as internal curl_off_t print formatting strings for the internal *printf functions which still cannot handle print formatting string directives such as "I64d", "I64u", and others available on MSVC, MinGW, Intel's ICC, and other DOS/Windows compilers. This reverts previous commit part which did: FORMAT_OFF_T -> CURL_FORMAT_CURL_OFF_T FORMAT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU
2008-08-15For congruency sake with the naming of other CURL_XXXXXX_CURL_OFF_T macros,Yang Tse
the names of the curl_off_t formatting string directives now become CURL_FORMAT_CURL_OFF_T and CURL_FORMAT_CURL_OFF_TU. CURL_FMT_OFF_T -> CURL_FORMAT_CURL_OFF_T CURL_FMT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU Remove the use of an internal name for the curl_off_t formatting string directives and use the common one available from the inside and outside of the library. FORMAT_OFF_T -> CURL_FORMAT_CURL_OFF_T FORMAT_OFF_TU -> CURL_FORMAT_CURL_OFF_TU
2008-08-11Fixed a boundary condition error in ftp_readresp() whereby a non-terminalDan Fandrich
line of a multiline FTP response whose last byte landed exactly at the end of the BUFSIZE-length buffer would be treated as the terminal response line. The following response code read in would then actually be the end of the previous response line, and all responses from then on would correspond to the wrong command. Test case 1062 verifies this. Stop closing a never-opened ftp socket.
2008-07-07- Scott Barrett provided a test case for a segfault in the FTP code and theDaniel Stenberg
fix for it. It occured when you did a FTP transfer using CURLFTPMETHOD_SINGLECWD and then did another one on the same easy handle but switched to CURLFTPMETHOD_NOCWD. Due to the "dir depth" variable not being cleared properly. Scott's test case is now known as test 539 and it verifies the fix.
2008-05-07- Liam Healy filed the debian bug report #480044Daniel Stenberg
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480044) identifying a segfault when using krb5 ftp, but the krb4 code had the same problem.
2008-04-28- Norbert Frese filed bug report #1951588: "Problem with curlftpfs andDaniel Stenberg
libcurl" (http://curl.haxx.se/bug/view.cgi?id=1951588) which seems to be an identical report to what Denis Golovan reported in http://curl.haxx.se/mail/lib-2008-02/0108.html The FTP code didn't reset the user/password pointers properly even though there might've been a new struct/cconnection getting used.
2008-04-22Added support for running on Symbian OS.Dan Fandrich
2008-04-17Some trivial changesDan Fandrich
2008-04-05- Based on the Debian bug report #474224 that complained about the FTP errorDaniel Stenberg
message when libcurl doesn't get a 220 back immediately on connect, I now changed it to be more specific on what the problem is. Also worth noticing: while the bug report contains an example where the response is: 421 There are too many connected users, please try again later we cannot assume that the error message will always be this readable nor that it fits within a particular boundary etc.
2008-02-07- Refactored a lot of timeout code into a few functions in an attempt to makeDaniel Stenberg
them all use the same (hopefully correct) logic to make it less error-prone and easier to introduce library-wide where it should be used.
2008-01-31- Dmitry Kurochkin moved several struct fields from the connectdata struct toDaniel Stenberg
the SingleRequest one to make pipelining better. It is a bit tricky to keep them in the right place, to keep things related to the actual request or to the actual connection in the right place.
2008-01-15Calls to Curl_failf() are not supposed to provide a trailing newline as theDaniel Stenberg
function itself adds that. Fixed on 50 or something strings!
2008-01-11fix compiler warningYang Tse
2008-01-10Georg Lippitsch brought CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA to allowDaniel Stenberg
libcurl to seek in a given input stream. This is particularly important when doing upload resumes when there's already a huge part of the file present remotely. Before, and still if this callback isn't used, libcurl will read and through away the entire file up to the point to where the resuming begins (which of course can be a slow opereration depending on file size, I/O bandwidth and more). This new function will also be preferred to get used instead of the CURLOPT_IOCTLFUNCTION for seeking back in a stream when doing multi-stage HTTP auth with POST/PUT.
2008-01-06more SOCKS5_HOSTNAME adjustments from Richard AttererDaniel Stenberg
2008-01-06make sure we deal with SOCKS5_HOSTNAME as a proxy type as wellDaniel Stenberg
2008-01-03'false' and 'true' are not built-ins on most compilers.Gisle Vanem
Use TRUE/FALSE from setup_once.h.
2008-01-02Richard Atterer brought a patch that added support for SOCKS4a proxies, whichDaniel Stenberg
is an inofficial PROXY4 variant that sends the hostname to the proxy instead of the resolved address (which is already supported by SOCKS5). --socks4a is the curl command line option for it and CURLOPT_PROXYTYPE can now be set to CURLPROXY_SOCKS4A as well.
2007-12-08All static functions that were previously name Curl_* something no longerDaniel Stenberg
use that prefix as we use that prefix only for library-wide internal global symbols.
2007-11-29Fixed the resumed FTP upload loop to not require that the read callbackDaniel Stenberg
returns a full buffer on each invoke.
2007-11-24struct HandleData is now called struct SingleRequest, and is only for data thatDaniel Stenberg
is inited at the start of the DO action. I removed the Curl_transfer_keeper struct completely, and I had to move out a few struct members (that had to be set before DO or used after DONE) to the UrlState struct. The SingleRequest struct is accessed with SessionHandle->req. One of the biggest reasons for doing this was the bunch of duplicate struct members in HandleData and Curl_transfer_keeper since it was really messy to keep track of two variables with the same name and basically the same purpose!
2007-11-07if () => if()Daniel Stenberg
while () => while() and some other minor re-indentings
2007-11-05removed space after if and while before the parenthesis for better source codeDaniel Stenberg
consistency
2007-11-02avoid setting up a transfer when the state machine failed previouslyDaniel Stenberg
2007-11-01minor re-indentDaniel Stenberg
2007-10-26Fixed a valgrind uninitialized variable error.Dan Fandrich
2007-10-24Curl_ftp_disconnect() no longer relies on anything in the reqdata struct. ThatDaniel Stenberg
was even mentioned to be bad in a comment! Should make test 2000 and 2001 work fine. Also, freedirs() now take a ftp_conn struct pointer which saves some extra unnecessary variable assignments.
2007-10-22Michal Marek forwarded the bug reportDaniel Stenberg
https://bugzilla.novell.com/show_bug.cgi?id=332917 about a HTTP redirect to FTP that caused memory havoc. His work together with my efforts created two fixes: #1 - FTP::file was moved to struct ftp_conn, because is has to be dealt with at connection cleanup, at which time the struct HandleData could be used by another connection. Also, the unused char *urlpath member is removed from struct FTP. #2 - provide a Curl_reset_reqproto() function that frees data->reqdata.proto.* on connection setup if needed (that is if the SessionHandle was used by a different connection).
2007-10-17We use this ZERO_NULL to avoid picky compiler warnings,Yang Tse
when assigning a NULL pointer to a function pointer var.
2007-10-13Made a few more functions static with the protocol handler table in place.Dan Fandrich
2007-10-12Fixed a few compile errors and warnings.Dan Fandrich
2007-10-12Added per-protocol callback static tables, replacing callback ptr storagePatrick Monnerat
in the connectdata structure by a single handler table ptr.
2007-10-02Fix memory leak under low memory conditions.Yang Tse
2007-10-02Fix compiler warningYang Tse
2007-09-27Renamed a few variables to avoid shadowing global declarations.Dan Fandrich
2007-09-27Enabled a few more gcc warnings with --enable-debug. Renamed a fewDan Fandrich
variables to avoid shadowing global declarations.
2007-09-26Max Katsev reported that when doing a libcurl FTP request withDaniel Stenberg
CURLOPT_NOBODY enabled but not CURLOPT_HEADER, libcurl wouldn't do TYPE before it does SIZE which makes it less useful. I walked over the code and made it do this properly, and added test case 542 to verify it.
2007-09-24Immanuel Gregoire fixed KNOWN_BUGS #44: --ftp-method nocwd did not handleDaniel Stenberg
URLs ending with a slash properly (it should list the contents of that directory). Test case 351 brought back and also test 1010 was added.
2007-09-11- I noticed while writing test 541 that the FTP code wrongly did a CWD on theDaniel Stenberg
second transfer as it didn't store and remember the "" path from the previous transfer so it would instead CWD to the entry path as stored. This worked, but did a superfluous command. Thus, test case 541 now also verifies this fix.
2007-09-05Curl_GetFTPResponse() now checks and properly deals with the fact that theDaniel Stenberg
underlying ftp_readresp() function has a separate "cache" where there might in fact be leftover data...
2007-08-31Renamed the CURLE_FTP_SSL_FAILED error code to CURLE_USE_SSL_FAILED.Dan Fandrich
Renamed the curl_ftpssl enum to curl_usessl and its enumerated constants, creating macros for backward compatibility.
2007-08-30Renamed several libcurl error codes and options to make them more generalDan Fandrich
and allow reuse by multiple protocols. Several unused error codes were removed. In all cases, macros were added to preserve source (and binary) compatibility with the old names. These macros are subject to removal at a future date, but probably not before 2009. An application can be tested to see if it is using any obsolete code by compiling it with the CURL_NO_OLDIES macro defined. Documented some newer error codes in libcurl-error(3)
2007-08-30Made Curl_GetFTPResponse() use lots less code and instead use the properDaniel Stenberg
low-level ftp_readresp() function. Hopefully adressing bug #1779054.
2007-08-27Fixed some minor type mismatches and missing consts mainly found by splint.Dan Fandrich
2007-08-24Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointedDaniel Stenberg
out that libcurl didn't deal with large responses from server commands, when the single response was consisting of multiple lines but of a total size of 16KB or more. Dan Fandrich improved the ftp test script and provided test case 1006 to repeat the problem, and I fixed the code to make sure this new test case runs fine.
2007-08-22Bug report #1779054 (http://curl.haxx.se/bug/view.cgi?id=1779054) pointedDaniel Stenberg
out that libcurl didn't deal with very long (>16K) FTP server response lines properly. Starting now, libcurl will chop them off (thus the client app will not get the full line) but survive and deal with them fine otherwise. Test case 1003 was added to verify this.
2007-08-20Based on a patch by Christian Vogt, the FTP code now sets the upcomingDaniel Stenberg
download transfer size much earlier to be possible to get read with CURLINFO_CONTENT_LENGTH_DOWNLOAD as soon as possible.
2007-08-17- Robson Braga Araujo filed bug report #1776232Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1776232) about libcurl calling Curl_client_write(), passing on a const string that the caller may not modify and yet it does (on some platforms).
2007-08-17Robson Braga Araujo filed bug report #1776235Daniel Stenberg
(http://curl.haxx.se/bug/view.cgi?id=1776235) about ftp requests with NOBODY on a directory would do a "SIZE (null)" request. This is now fixed and test case 1000 was added to verify.
2007-08-01Patrick Monnerat and I modified libcurl so that now it *copies* all stringsDaniel Stenberg
passed to it with curl_easy_setopt()! Previously it has always just refered to the data, forcing the user to keep the data around until libcurl is done with it. That is now history and libcurl will instead clone the given strings and keep private copies.