1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00
Go to file
Daniel Stenberg 77cfeadfa6 OpenSSL: multi interface handshake could hang
John-Mark Bell filed bug #3000052 that identified a problem (with
an associated patch) with the OpenSSL handshake state machine
when the multi interface is used:

Performing an https request using a curl multi handle and using
select or epoll to wait for events results in a hang. It appears
that the cause is the fix for bug #2958179, which makes
ossl_connect_common unconditionally return from the step 2 loop
when fetching from a multi handle.

When ossl_connect_step2 has completed, it updates
connssl->connecting_state to ssl_connect_3. ossl_connect_common
will then return to the caller, as a multi handle is in
use. Eventually, the client code will call curl_multi_fdset to
obtain an updated fdset to select or epoll on. For https
requests, curl_multi_fdset will cause https_getsock to be called.
https_getsock will only return a socket handle if the
connecting_state is ssl_connect_2_reading or
ssl_connect_2_writing.  Therefore, the client will never obtain a
valid fdset, and thus not drive the multi handle, resulting in a
hang.

(http://curl.haxx.se/bug/view.cgi?id=3000052)
2010-05-14 22:35:08 +02:00
CMake CMake fixes for Linux. 2010-03-24 14:07:18 -04:00
docs updated with symbols added in recent commits for 7.21.0 2010-05-13 00:07:37 +02:00
include version: we're now going for 7.21.0 2010-05-14 20:55:54 +02:00
lib OpenSSL: multi interface handshake could hang 2010-05-14 22:35:08 +02:00
m4 new configure option --enable-threaded-resolver 2010-04-25 23:24:05 +02:00
packages Added Polar SSL and RTMP files to the non-autoconf build files 2010-05-12 19:05:58 -07:00
perl remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
src telnet: Allow programatic use of telnet. 2010-04-29 08:55:11 +02:00
tests Added directories.pm to the source tar ball 2010-05-14 13:31:07 -07:00
.gitattributes Add .gitattributes files to turn off CRLF translation for some files 2010-03-24 23:48:35 -04:00
.gitignore ignore files generated by 'maketgz' 2010-04-14 17:12:34 +02:00
acinclude.m4 remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
Android.mk Copy the license file so it's seen by the Android build system 2010-05-12 15:23:28 -07:00
buildconf findtool: file name as a full path requires a slash 2010-05-09 23:16:37 +02:00
buildconf.bat modified to use the git file, not cvs 2010-04-11 11:35:33 +02:00
CHANGES OpenSSL: multi interface handshake could hang 2010-05-14 22:35:08 +02:00
CHANGES.0 removed trailing whitespace 2010-02-14 19:40:18 +00:00
CMakeLists.txt Enable LDAP by default since it is now disabled when ldap.h is not found, 2010-03-24 14:16:41 -04:00
configure.ac Remove support for BSD version of PolarSSL 2010-05-13 21:50:52 +02:00
COPYING update the generic copyright year range to include 2010 2010-03-02 13:47:58 +00:00
CTestConfig.cmake ENH: move dashboard location 2009-07-15 19:40:46 +00:00
curl-config.in remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
curl-style.el remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
GIT-INFO s/CVS/git 2010-03-22 00:41:34 +01:00
install-sh removed trailing whitespace 2010-02-14 19:40:18 +00:00
libcurl.pc.in remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
MacOSX-Framework removed trailing whitespace 2010-02-14 19:40:18 +00:00
Makefile.am remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
Makefile.dist replaced wsock32.lib usage with ws2_32.lib in MSVC makefiles 2010-04-20 16:30:10 +02:00
maketgz restore executable bits on some files 2010-03-24 11:07:35 +01: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
README various changes of CVS to git 2010-03-22 00:34:09 +01:00
RELEASE-NOTES OpenSSL: multi interface handshake could hang 2010-05-14 22:35:08 +02:00
sample.emacs remove the CVSish $Id$ lines 2010-03-24 11:02:54 +01:00
TODO-RELEASE scrapped all left-over TODOs 2010-03-24 11:20:34 +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

  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.