mirror of
https://github.com/moparisthebest/curl
synced 2025-03-11 07:39:50 -04:00
multi: start ftp state machine when switching to DO_MORE
This extends the fix from commit d7934b8bd491 When the multi state is changed within the multi_runsingle from DOING to DO_MORE, we didn't immediately start the FTP state machine again. That then left the FTP state in FTP_STOP. When curl_multi_fdset() was subsequently called, the ftp_domore_getsock() function would return the wrong fd info. Reported by: Gokhan Sengun
This commit is contained in:
parent
120025b7f8
commit
b0d42da26b
17
lib/multi.c
17
lib/multi.c
@ -1339,18 +1339,11 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||||||
&dophase_done);
|
&dophase_done);
|
||||||
if(CURLE_OK == easy->result) {
|
if(CURLE_OK == easy->result) {
|
||||||
if(dophase_done) {
|
if(dophase_done) {
|
||||||
/* after DO, go PERFORM... or DO_MORE */
|
/* after DO, go DO_DONE or DO_MORE */
|
||||||
if(easy->easy_conn->bits.do_more) {
|
multistate(easy, easy->easy_conn->bits.do_more?
|
||||||
/* we're supposed to do more, but we need to sit down, relax
|
CURLM_STATE_DO_MORE:
|
||||||
and wait a little while first */
|
CURLM_STATE_DO_DONE);
|
||||||
multistate(easy, CURLM_STATE_DO_MORE);
|
result = CURLM_CALL_MULTI_PERFORM;
|
||||||
result = CURLM_OK;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/* we're done with the DO, now DO_DONE */
|
|
||||||
multistate(easy, CURLM_STATE_DO_DONE);
|
|
||||||
result = CURLM_CALL_MULTI_PERFORM;
|
|
||||||
}
|
|
||||||
} /* dophase_done */
|
} /* dophase_done */
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user