diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2021-01-15 02:32:41 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@dtucker.net> | 2021-01-18 18:43:43 +1100 |
commit | 5339ab369c225b40bc64d5ec3374f5c91b3ad609 (patch) | |
tree | 632766641b2a17e212f17f157fe5a89f28acc29e | |
parent | a164862dfa863b54b7897f66e1dd75437f086c11 (diff) | |
download | openssh-git-5339ab369c225b40bc64d5ec3374f5c91b3ad609.tar.gz |
upstream: In waitfd(), when poll returns early we are subtracting
the elapsed time from the timeout each loop, so we only want to measure the
elapsed time the poll() in that loop, not since the start of the function.
Spotted by chris.xj.zhu at gmail.com, ok djm@
OpenBSD-Commit-ID: 199df060978ee9aa89b8041a3dfaf1bf7ae8dd7a
-rw-r--r-- | misc.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.158 2021/01/11 02:12:57 dtucker Exp $ */ +/* $OpenBSD: misc.c,v 1.159 2021/01/15 02:32:41 dtucker Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2005-2020 Damien Miller. All rights reserved. @@ -297,10 +297,10 @@ waitfd(int fd, int *timeoutp, short events) struct timeval t_start; int oerrno, r; - monotime_tv(&t_start); pfd.fd = fd; pfd.events = events; for (; *timeoutp >= 0;) { + monotime_tv(&t_start); r = poll(&pfd, 1, *timeoutp); oerrno = errno; ms_subtract_diff(&t_start, timeoutp); |