mirror of
https://github.com/curl/curl.git
synced 2026-08-25 16:33:38 +03: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
3 changed files with 23 additions and 6 deletions
|
|
@ -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
|
||||
* 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);
|
||||
if (easy->result)
|
||||
free(newurl);
|
||||
break;
|
||||
}
|
||||
|
||||
multistate(easy, CURLM_STATE_DONE);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue