summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrian <brian@openbsd.org>1999-08-06 01:34:52 +0000
committerbrian <brian@openbsd.org>1999-08-06 01:34:52 +0000
commit4c219b06208bd537c7050c476b6529581e532b1a (patch)
tree9b2f125871cdbdf4f5478bc7b50eef41688adb9a
parentreformat and simplify a little (diff)
downloadwireguard-openbsd-4c219b06208bd537c7050c476b6529581e532b1a.tar.xz
wireguard-openbsd-4c219b06208bd537c7050c476b6529581e532b1a.zip
If the clock is put back, ensure that we don't end up dividing by
zero when calculating our throughput
-rw-r--r--usr.sbin/ppp/ppp/throughput.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/usr.sbin/ppp/ppp/throughput.c b/usr.sbin/ppp/ppp/throughput.c
index 6246298fc4a..c6596800e94 100644
--- a/usr.sbin/ppp/ppp/throughput.c
+++ b/usr.sbin/ppp/ppp/throughput.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: throughput.c,v 1.4 1999/08/05 10:32:14 brian Exp $
+ * $Id: throughput.c,v 1.5 1999/08/06 01:34:52 brian Exp $
*/
#include <sys/types.h>
@@ -75,6 +75,15 @@ throughput_uptime(struct pppThroughput *t)
time_t downat;
downat = t->downtime ? t->downtime : time(NULL);
+ if (t->uptime && downat < t->uptime) {
+ /* Euch ! The clock's gone back ! */
+ int i;
+
+ for (i = 0; i < t->SamplePeriod; i++)
+ t->SampleOctets[i] = 0;
+ t->nSample = 0;
+ t->uptime = downat;
+ }
return t->uptime ? downat - t->uptime : 0;
}