Base idle timeout on player->curup again, not current time

Idle timeout used to expire max_idle minutes after the last
player->curup update.  When we got rid of the idle thread in commit
08b94556 (v4.3.20), this got changed to "wait no more than max_idle
minutes for input".  Time spent computing and time spent blocked on
output no longer counts.  In particular, a connection can block
indefinitely on output since then.  Let's fix that.

Start with basing the input timeout on player->curup again.  The
missing output timeout will be added shortly.

Aside: since status() updates player->curup, the idle timer gets reset
when the update aborts a command.  Left for another day.
This commit is contained in:
Markus Armbruster 2012-03-10 13:51:39 +01:00
parent a96b400da3
commit ed1cbc97e6
5 changed files with 22 additions and 6 deletions

View file

@ -44,6 +44,7 @@
extern struct iop *io_open(int, int, int);
extern void io_init(void);
extern void io_close(struct iop *, struct timeval *);
extern void io_timeout(struct timeval *, time_t);
extern int io_input(struct iop *, struct timeval *);
extern int io_inputwaiting(struct iop *);
extern int io_outputwaiting(struct iop *);