Loading lib/multi.c +48 −36 Original line number Diff line number Diff line Loading @@ -1310,6 +1310,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, CURLcode result = CURLE_OK; struct SingleRequest *k; time_t timeout_ms; time_t recv_timeout_ms; time_t send_timeout_ms; int control; if(!GOOD_EASY_HANDLE(data)) Loading Loading @@ -1829,19 +1831,30 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, else result = Curl_speedcheck(data, now); if(( (data->set.max_send_speed == 0) || (Curl_pgrsLimitWaitTime(data->progress.uploaded, if(!result) { send_timeout_ms = 0; if(data->set.max_send_speed > 0) send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, data->progress.ul_limit_size, data->set.max_send_speed, data->progress.ul_limit_start, now) <= 0)) && ( (data->set.max_recv_speed == 0) || (Curl_pgrsLimitWaitTime(data->progress.downloaded, now); recv_timeout_ms = 0; if(data->set.max_recv_speed > 0) recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, data->progress.dl_limit_size, data->set.max_recv_speed, data->progress.dl_limit_start, now) <= 0))) now); if(send_timeout_ms <= 0 && recv_timeout_ms <= 0) multistate(data, CURLM_STATE_PERFORM); else if(send_timeout_ms >= recv_timeout_ms) Curl_expire_latest(data, send_timeout_ms); else Curl_expire_latest(data, recv_timeout_ms); } break; case CURLM_STATE_PERFORM: Loading @@ -1851,32 +1864,31 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, bool comeback = FALSE; /* check if over send speed */ if(data->set.max_send_speed > 0) { timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, send_timeout_ms = 0; if(data->set.max_send_speed > 0) send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, data->progress.ul_limit_size, data->set.max_send_speed, data->progress.ul_limit_start, now); if(timeout_ms > 0) { multistate(data, CURLM_STATE_TOOFAST); Curl_expire_latest(data, timeout_ms); break; } } /* check if over recv speed */ if(data->set.max_recv_speed > 0) { timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, recv_timeout_ms = 0; if(data->set.max_recv_speed > 0) recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, data->progress.dl_limit_size, data->set.max_recv_speed, data->progress.dl_limit_start, now); if(timeout_ms > 0) { if(send_timeout_ms > 0 || recv_timeout_ms > 0) { multistate(data, CURLM_STATE_TOOFAST); Curl_expire_latest(data, timeout_ms); if(send_timeout_ms >= recv_timeout_ms) Curl_expire_latest(data, send_timeout_ms); else Curl_expire_latest(data, recv_timeout_ms); break; } } /* read/write data if it is ready to do so */ result = Curl_readwrite(data->easy_conn, data, &done, &comeback); Loading Loading
lib/multi.c +48 −36 Original line number Diff line number Diff line Loading @@ -1310,6 +1310,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, CURLcode result = CURLE_OK; struct SingleRequest *k; time_t timeout_ms; time_t recv_timeout_ms; time_t send_timeout_ms; int control; if(!GOOD_EASY_HANDLE(data)) Loading Loading @@ -1829,19 +1831,30 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, else result = Curl_speedcheck(data, now); if(( (data->set.max_send_speed == 0) || (Curl_pgrsLimitWaitTime(data->progress.uploaded, if(!result) { send_timeout_ms = 0; if(data->set.max_send_speed > 0) send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, data->progress.ul_limit_size, data->set.max_send_speed, data->progress.ul_limit_start, now) <= 0)) && ( (data->set.max_recv_speed == 0) || (Curl_pgrsLimitWaitTime(data->progress.downloaded, now); recv_timeout_ms = 0; if(data->set.max_recv_speed > 0) recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, data->progress.dl_limit_size, data->set.max_recv_speed, data->progress.dl_limit_start, now) <= 0))) now); if(send_timeout_ms <= 0 && recv_timeout_ms <= 0) multistate(data, CURLM_STATE_PERFORM); else if(send_timeout_ms >= recv_timeout_ms) Curl_expire_latest(data, send_timeout_ms); else Curl_expire_latest(data, recv_timeout_ms); } break; case CURLM_STATE_PERFORM: Loading @@ -1851,32 +1864,31 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, bool comeback = FALSE; /* check if over send speed */ if(data->set.max_send_speed > 0) { timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, send_timeout_ms = 0; if(data->set.max_send_speed > 0) send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded, data->progress.ul_limit_size, data->set.max_send_speed, data->progress.ul_limit_start, now); if(timeout_ms > 0) { multistate(data, CURLM_STATE_TOOFAST); Curl_expire_latest(data, timeout_ms); break; } } /* check if over recv speed */ if(data->set.max_recv_speed > 0) { timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, recv_timeout_ms = 0; if(data->set.max_recv_speed > 0) recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded, data->progress.dl_limit_size, data->set.max_recv_speed, data->progress.dl_limit_start, now); if(timeout_ms > 0) { if(send_timeout_ms > 0 || recv_timeout_ms > 0) { multistate(data, CURLM_STATE_TOOFAST); Curl_expire_latest(data, timeout_ms); if(send_timeout_ms >= recv_timeout_ms) Curl_expire_latest(data, send_timeout_ms); else Curl_expire_latest(data, recv_timeout_ms); break; } } /* read/write data if it is ready to do so */ result = Curl_readwrite(data->easy_conn, data, &done, &comeback); Loading