- if (!timercmp(&now,&qu->timeout_expires,>)) {
- inter_maxtoabs(tv_io,tvbuf,now,qu->timeout_expires);
+ if (timercmp(&now,&qu->timeout_started,<)) /* clock rewound */
+ qu->timeout_started= now;
+ expires= qu->timeout_started;
+ timevaladd(&expires, qu->timeout_ms);
+ if (!timercmp(&now,&expires,>)) {
+ inter_maxtoabs(tv_io,tvbuf,now,expires);