Go to file
Daniel Stenberg d7934b8bd4 curl_multi_fdset: correct fdset with FTP PORT use
After a PORT has been issued, and the multi handle would switch to the
CURLM_STATE_DO_MORE state (which is unique for FTP), libcurl would
return the wrong fdset to wait for when curl_multi_fdset() is
called. The code would blindly assume that it was waiting for a connect
of the second connection, while that isn't true immediately after the
PORT command.

Also, the function multi.c:domore_getsock() was highly FTP-centric and
therefore ugly to keep in protocol-agnostic code. I solved this problem
by introducing a new function pointer in the Curl_handler struct called
domore_getsock() which is only called during the DOMORE state for
protocols that set that pointer.

The new ftp.c:ftp_domore_getsock() function now returns fdset info about
the control connection's command/response handling while such a state is
in use, and goes over to waiting for a writable second connection first
once the commands are done.

The original problem could be seen by running test 525 and checking the
time stamps in the FTP server log. I can verify that this fix at least
fixes this problem.

Bug: http://curl.haxx.se/mail/lib-2011-10/0250.html
Reported by: Gokhan Sengun
2011-10-21 23:36:54 +02:00
CMake sources: update source headers 2011-03-10 12:04:33 +01:00
docs KNOWN_BUGS: #74 fixed 2011-10-20 13:12:02 +02:00
include typecheck: allow NULL to unset CURLOPT_ERRORBUFFER 2011-10-15 23:59:22 +02:00
lib curl_multi_fdset: correct fdset with FTP PORT use 2011-10-21 23:36:54 +02:00
m4 configure openssl version check: handle lack of L suffix 2011-09-28 23:09:46 +02:00
packages curl tool: reviewed code moved to tool_*.[ch] files 2011-10-06 17:39:00 +02:00
perl remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
src --show-error: position indepdenent 2011-10-16 23:39:59 +02:00
tests Added some missing test case XML tags and keywords 2011-10-21 13:33:40 -07:00
winbuild - typo 2011-05-20 13:35:23 +02:00
.gitattributes Add .gitattributes files to turn off CRLF translation for some files 2010-03-24 23:48:35 -04:00
.gitignore gitignore: config.cache 2011-06-30 09:58:45 +02:00
Android.mk Added LOCAL_MODULE_TAGS to support Android gingerbread 2011-06-20 12:01:38 -07:00
CHANGES CHANGES: move all contents from CHANGES to CHANGES.0 2010-06-21 22:27:39 +02:00
CHANGES.0 CHANGES: move all contents from CHANGES to CHANGES.0 2010-06-21 22:27:39 +02:00
CMakeLists.txt cmake: find winsock when building on windows 2011-08-13 14:42:21 +02:00
COPYING COPYING: update the year to 2011 2011-01-29 23:41:15 +01:00
CTestConfig.cmake ENH: move dashboard location 2009-07-15 19:40:46 +00:00
GIT-INFO s/CVS/git 2010-03-22 00:41:34 +01:00
MacOSX-Framework MacOSX-Framework: updates for Snowleopard 2010-09-21 00:07:45 +02:00
Makefile.am include: cleanup 2011-05-09 10:20:31 +02:00
Makefile.dist Changed some main makefile targets. 2011-09-25 17:43:50 +02:00
Makefile.msvc.names build: refactoring of msvc makefiles to allow overriding of library filenames. 2010-12-20 21:53:44 +01:00
README various changes of CVS to git 2010-03-22 00:34:09 +01:00
RELEASE-NOTES RELEASE-NOTES: synced with ecbb08cea3 2011-10-18 22:34:32 +02:00
TODO-RELEASE TODO-RELEASE: postpone the remainders 2011-09-11 19:26:17 +02:00
acinclude.m4 configure - m4: make CURL_CHECK_DEF ignore leading whitespace on symbol def 2011-09-27 22:01:58 +02:00
buildconf buildconf: warn about autoconf 2.67 and 2.68 generating bad/unusable scripts 2011-10-06 12:57:12 +02:00
buildconf.bat keep a single copy of config-win32.h in version control repository. 2011-08-05 13:20:22 +02:00
configure.ac NTLM_WB: final congruency naming adjustments 2011-08-27 06:31:18 +02:00
curl-config.in curl-config: fix version output 2011-04-19 16:41:34 +02:00
curl-style.el remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
install-sh removed trailing whitespace 2010-02-14 19:40:18 +00:00
libcurl.pc.in libcurl.pc: version number fix 2011-04-06 12:09:27 +02:00
log2changes.pl log2changes: correct command line, fix tag usage, change Version output 2010-06-21 22:21:25 +02:00
maketgz curl tool: reviewed code moved to tool_*.[ch] files 2011-10-06 17:39:00 +02:00
missing renamed generated config.h to curl_config.h in order to avoid clashes when libcurl is used with other projects which also have a config.h. 2009-07-14 13:25:14 +00:00
mkinstalldirs remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
sample.emacs remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
vc6curl.dsw Renamed vc6 workspace and project files to avoid filename clash when used for conversion to later VS versions. 2009-05-08 17:51:44 +00:00

README

                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

README

  Curl is a command line tool for transferring data specified with URL
  syntax. Find out how to use curl by reading the curl.1 man page or the
  MANUAL document. Find out how to install Curl by reading the INSTALL
  document.

  libcurl is the library curl is using to do its job. It is readily
  available to be used by your software. Read the libcurl.3 man page to
  learn how!

  You find answers to the most frequent questions we get in the FAQ document.

  Study the COPYING file for distribution terms and similar. If you distribute
  curl binaries or other binaries that involve libcurl, you might enjoy the
  LICENSE-MIXING document.

CONTACT

  If you have problems, questions, ideas or suggestions, please contact us
  by posting to a suitable mailing list. See http://curl.haxx.se/mail/

  All contributors to the project are listed in the THANKS document.

WEB SITE

  Visit the curl web site for the latest news and downloads:

        http://curl.haxx.se/

GIT

  To download the very latest source off the GIT server do this:

    git clone git://github.com/bagder/curl.git

  (you'll get a directory named curl created, filled with the source code)

NOTICE

  Curl contains pieces of source code that is Copyright (c) 1998, 1999
  Kungliga Tekniska Högskolan. This notice is included here to comply with the
  distribution terms.