diff options
-rw-r--r-- | lib/highlevel.c | 1 | ||||
-rw-r--r-- | lib/speedcheck.c | 17 | ||||
-rw-r--r-- | lib/speedcheck.h | 1 | ||||
-rw-r--r-- | lib/urldata.h | 2 |
4 files changed, 14 insertions, 7 deletions
diff --git a/lib/highlevel.c b/lib/highlevel.c index add9735b8..7a9dad308 100644 --- a/lib/highlevel.c +++ b/lib/highlevel.c @@ -174,6 +174,7 @@ _Transfer(struct connectdata *c_conn) #define KEEP_WRITE 2 pgrsTime(data, TIMER_PRETRANSFER); + speedinit(data); if (!conn->getheader) { header = FALSE; diff --git a/lib/speedcheck.c b/lib/speedcheck.c index 125f077ac..d3d33e562 100644 --- a/lib/speedcheck.c +++ b/lib/speedcheck.c @@ -50,21 +50,24 @@ #include "sendf.h" #include "speedcheck.h" +void speedinit(struct UrlData *data) +{ + memset(&data->keeps_speed, 0, sizeof(struct timeval)); +} + CURLcode speedcheck(struct UrlData *data, struct timeval now) { - static struct timeval keeps_speed; - - if((data->current_speed >= 0) && + if((data->progress.current_speed >= 0) && data->low_speed_time && - (tvlong(keeps_speed) != 0) && - (data->current_speed < data->low_speed_limit)) { + (tvlong(data->keeps_speed) != 0) && + (data->progress.current_speed < data->low_speed_limit)) { /* We are now below the "low speed limit". If we are below it for "low speed time" seconds we consider that enough reason to abort the download. */ - if( tvdiff(now, keeps_speed) > data->low_speed_time) { + if( tvdiff(now, data->keeps_speed) > data->low_speed_time) { /* we have been this slow for long enough, now die */ failf(data, "Operation too slow. " @@ -76,7 +79,7 @@ CURLcode speedcheck(struct UrlData *data, } else { /* we keep up the required speed all right */ - keeps_speed = now; + data->keeps_speed = now; } return CURLE_OK; } diff --git a/lib/speedcheck.h b/lib/speedcheck.h index eb037d508..2ecef302c 100644 --- a/lib/speedcheck.h +++ b/lib/speedcheck.h @@ -44,6 +44,7 @@ #include "timeval.h" +void speedinit(struct UrlData *data); CURLcode speedcheck(struct UrlData *data, struct timeval now); diff --git a/lib/urldata.h b/lib/urldata.h index e5fcf16ff..5b5da4d1f 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -503,6 +503,8 @@ struct UrlData { #ifdef KRB4 FILE *cmdchannel; #endif + + struct timeval keeps_speed; /* this should be request-specific */ }; #define LIBCURL_NAME "libcurl" |