Commit f353258f authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

corrected bad data re-use and buffer problems

parent 1754d616
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ int pgrsUpdate(struct UrlData *data)
  struct timeval now;
  int result;

  char max5[6][6];
  char max5[6][10];
  double dlpercen=0;
  double ulpercen=0;
  double total_percen=0;
@@ -191,12 +191,7 @@ int pgrsUpdate(struct UrlData *data)
  double total_transfer;
  double total_expected_transfer;

#define CURR_TIME 5

  static double speeder[ CURR_TIME ];
  static int speeder_c=0;

  int nowindex = speeder_c% CURR_TIME;
  int nowindex = data->progress.speeder_c% CURR_TIME;
  int checkindex;
  int count;

@@ -241,15 +236,19 @@ int pgrsUpdate(struct UrlData *data)
  /* Let's do the "current speed" thing, which should use the fastest
         of the dl/ul speeds */

  speeder[ nowindex ] = data->progress.downloaded>data->progress.uploaded?
  data->progress.speeder[ nowindex ] =
    data->progress.downloaded>data->progress.uploaded?
    data->progress.downloaded:data->progress.uploaded;
  speeder_c++; /* increase */
  count = ((speeder_c>=CURR_TIME)?CURR_TIME:speeder_c) - 1;
  checkindex = (speeder_c>=CURR_TIME)?speeder_c%CURR_TIME:0;
  data->progress.speeder_c++; /* increase */
  count = ((data->progress.speeder_c>=CURR_TIME)?
           CURR_TIME:data->progress.speeder_c) - 1;
  checkindex = (data->progress.speeder_c>=CURR_TIME)?
    data->progress.speeder_c%CURR_TIME:0;

  /* find out the average speed the last CURR_TIME seconds */
  data->progress.current_speed =
    (speeder[nowindex]-speeder[checkindex])/(count?count:1);
    (data->progress.speeder[nowindex]-
     data->progress.speeder[checkindex])/(count?count:1);

  if(data->progress.flags & PGRS_HIDE)
    return 0;
@@ -284,6 +283,7 @@ int pgrsUpdate(struct UrlData *data)
         total estimate! */
  total_estimate = ulestimate>dlestimate?ulestimate:dlestimate;


  /* If we have a total estimate, we can display that and the expected
         time left */
  if(total_estimate) {
+5 −0
Original line number Diff line number Diff line
@@ -242,6 +242,11 @@ struct Progress {
  struct timeval t_connect;
  struct timeval t_pretransfer;
  int httpcode;

#define CURR_TIME 5

  double speeder[ CURR_TIME ];
  int speeder_c;
};

/****************************************************************************