Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch

name resolves. It could get stuck in the wrong state.
This commit is contained in:
Daniel Stenberg 2006-08-31 12:53:39 +00:00
parent c9c8ee3796
commit d7168a82e2
3 changed files with 14 additions and 3 deletions

View File

@ -7,6 +7,10 @@
Changelog Changelog
Daniel (31 August 2006)
- Dmitriy Sergeyev found and fixed a multi interface flaw when using asynch
name resolves. It could get stuck in the wrong state.
Gisle (29 August 2006) Gisle (29 August 2006)
- Added support for other MS-DOS compilers (desides djgpp). All MS-DOS - Added support for other MS-DOS compilers (desides djgpp). All MS-DOS
compiler now uses the same config.dos file (renamed to config.h by compiler now uses the same config.dos file (renamed to config.h by

View File

@ -11,12 +11,14 @@ Curl and libcurl 7.15.6
This release includes the following changes: This release includes the following changes:
o Added support for other MS-DOS compilers (desides djgpp)
o CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA were added o CURLOPT_SOCKOPTFUNCTION and CURLOPT_SOCKOPTDATA were added
o (FTP) libcurl avoids sending TYPE if the desired type was already set o (FTP) libcurl avoids sending TYPE if the desired type was already set
o (FTP) CURLOPT_PREQUOTE works even when CURLOPT_NOBODY is set true o (FTP) CURLOPT_PREQUOTE works even when CURLOPT_NOBODY is set true
This release includes the following bugfixes: This release includes the following bugfixes:
o multi interface using asynch resolves could get stuck in wrong state
o the 'running_handles' counter wasn't always updated properly when o the 'running_handles' counter wasn't always updated properly when
curl_multi_remove_handle() was used curl_multi_remove_handle() was used
o (FTP) EPRT transfers with IPv6 didn't work properly o (FTP) EPRT transfers with IPv6 didn't work properly
@ -31,12 +33,13 @@ Other curl-related news:
New curl mirrors: New curl mirrors:
o http://curl.geosdreams.info/ is a new Polish mirror
o http://curl.gfiles.org/ is a new Russian mirror o http://curl.gfiles.org/ is a new Russian mirror
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Domenico Andreoli, Armel Asselin, Gisle Vanem, Yang Tse, Andrew Biggs, Domenico Andreoli, Armel Asselin, Gisle Vanem, Yang Tse, Andrew Biggs,
Peter Sylvester, David McCreedy Peter Sylvester, David McCreedy, Dmitriy Sergeyev
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)

View File

@ -639,8 +639,12 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
is already freed and gone */ is already freed and gone */
easy->easy_conn = NULL; /* no more connection */ easy->easy_conn = NULL; /* no more connection */
else { else {
/* FIX: what if protocol_connect is TRUE here?! */ /* call again please so that we get the next socket setup */
multistate(easy, CURLM_STATE_WAITCONNECT); result = CURLM_CALL_MULTI_PERFORM;
if(protocol_connect)
multistate(easy, CURLM_STATE_DO);
else
multistate(easy, CURLM_STATE_WAITCONNECT);
} }
} }