mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
- Emil Romanus fixed:
When using the multi interface over HTTP and the server returns a Location header, the running easy handle will get stuck in the CURLM_STATE_PERFORM state, leaving the external event loop stuck waiting for data from the ingoing socket (when using the curl_multi_socket_action stuff). While this bug was pretty hard to find, it seems to require only a one-line fix. The break statement on line 1374 in multi.c caused the function to skip the call to multistate(). How to reproduce this bug? Well, that's another question. evhiperfifo.c in the examples directory chokes on this bug only _sometimes_, probably depending on how fast the URLs are added. One way of testing the bug out is writing to hiper.fifo from more than one source at the same time.
This commit is contained in:
parent
0090099565
commit
452e52f958
22
CHANGES
22
CHANGES
@ -7,11 +7,27 @@
|
|||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
|
||||||
|
Daniel Stenberg (10 Jan 2009)
|
||||||
|
- Emil Romanus fixed:
|
||||||
|
|
||||||
|
When using the multi interface over HTTP and the server returns a Location
|
||||||
|
header, the running easy handle will get stuck in the CURLM_STATE_PERFORM
|
||||||
|
state, leaving the external event loop stuck waiting for data from the
|
||||||
|
ingoing socket (when using the curl_multi_socket_action stuff). While this
|
||||||
|
bug was pretty hard to find, it seems to require only a one-line fix. The
|
||||||
|
break statement on line 1374 in multi.c caused the function to skip the call
|
||||||
|
to multistate().
|
||||||
|
|
||||||
|
How to reproduce this bug? Well, that's another question. evhiperfifo.c in
|
||||||
|
the examples directory chokes on this bug only _sometimes_, probably
|
||||||
|
depending on how fast the URLs are added. One way of testing the bug out is
|
||||||
|
writing to hiper.fifo from more than one source at the same time.
|
||||||
|
|
||||||
Daniel Fandrich (7 Jan 2009)
|
Daniel Fandrich (7 Jan 2009)
|
||||||
- Unified much of the SessionHandle initialization done in Curl_open() and
|
- Unified much of the SessionHandle initialization done in Curl_open() and
|
||||||
curl_easy_reset() by creating Curl_init_userdefined(). This had the side effect
|
curl_easy_reset() by creating Curl_init_userdefined(). This had the side
|
||||||
of fixing curl_easy_reset() so it now also resets CURLOPT_FTP_FILEMETHOD and
|
effect of fixing curl_easy_reset() so it now also resets
|
||||||
CURLOPT_SSL_SESSIONID_CACHE
|
CURLOPT_FTP_FILEMETHOD and CURLOPT_SSL_SESSIONID_CACHE
|
||||||
|
|
||||||
Daniel Stenberg (7 Jan 2009)
|
Daniel Stenberg (7 Jan 2009)
|
||||||
- Rob Crittenden did once again provide an NSS update:
|
- Rob Crittenden did once again provide an NSS update:
|
||||||
|
@ -42,6 +42,7 @@ This release includes the following bugfixes:
|
|||||||
o TTL "leak" in the DNS cache
|
o TTL "leak" in the DNS cache
|
||||||
o improved NSS initing
|
o improved NSS initing
|
||||||
o curl_easy_reset now resets more options
|
o curl_easy_reset now resets more options
|
||||||
|
o rare Location: follow bug with the multi interface
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
@ -53,6 +54,7 @@ advice from friends like these:
|
|||||||
Yang Tse, Daniel Fandrich, Jim Meyering, Christian Krause, Andreas Wurf,
|
Yang Tse, Daniel Fandrich, Jim Meyering, Christian Krause, Andreas Wurf,
|
||||||
Markus Koetter, Josef Wolf, Vlad Grachov, Pawel Kierski, Igor Novoseltsev,
|
Markus Koetter, Josef Wolf, Vlad Grachov, Pawel Kierski, Igor Novoseltsev,
|
||||||
Fred Machado, Ken Hirsch, Keshav Krity, Patrick Monnerat, Mark Karpeles,
|
Fred Machado, Ken Hirsch, Keshav Krity, Patrick Monnerat, Mark Karpeles,
|
||||||
Anthony Bryan, Peter Korsgaard, Phil Lisiecki, Bas Mevissen, Rob Crittenden
|
Anthony Bryan, Peter Korsgaard, Phil Lisiecki, Bas Mevissen, Rob Crittenden,
|
||||||
|
Emil Romanus
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -1371,7 +1371,6 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||||||
easy->result = Curl_follow(easy->easy_handle, newurl, FOLLOW_FAKE);
|
easy->result = Curl_follow(easy->easy_handle, newurl, FOLLOW_FAKE);
|
||||||
if (easy->result)
|
if (easy->result)
|
||||||
free(newurl);
|
free(newurl);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
multistate(easy, CURLM_STATE_DONE);
|
multistate(easy, CURLM_STATE_DONE);
|
||||||
|
Loading…
Reference in New Issue
Block a user