1
0
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:
Daniel Stenberg 2009-01-10 22:10:57 +00:00
parent 0090099565
commit 452e52f958
3 changed files with 23 additions and 6 deletions

22
CHANGES
View File

@ -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:

View File

@ -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)

View File

@ -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);