Add an activity time for clients, like for sessions, and change session and

client lookup to pick the most recently used rather than the most recently
created - this is much more useful when used interactively and (because the
activity time is set at creation) should have no effect on source-file.

Based on a problem reported by Jan Johansson.
This commit is contained in:
Nicholas Marriott
2009-11-03 22:40:40 +00:00
parent 5761ab6b55
commit 0785f2872f
4 changed files with 39 additions and 31 deletions

View File

@ -63,6 +63,7 @@ server_client_create(int fd)
if (gettimeofday(&c->creation_time, NULL) != 0)
fatal("gettimeofday failed");
memcpy(&c->activity_time, &c->creation_time, sizeof c->activity_time);
ARRAY_INIT(&c->prompt_hdata);
@ -287,6 +288,7 @@ server_client_handle_data(struct client *c)
oo = &c->session->options;
/* Update activity timer. */
memcpy(&c->activity_time, &tv_now, sizeof c->activity_time);
memcpy(&c->session->activity_time,
&tv_now, sizeof c->session->activity_time);
@ -583,9 +585,13 @@ server_client_msg_dispatch(struct client *c)
break;
c->flags &= ~CLIENT_SUSPENDED;
if (c->session != NULL &&
gettimeofday(&c->session->activity_time, NULL) != 0)
fatal("gettimeofday failed");
if (gettimeofday(&c->activity_time, NULL) != 0)
fatal("gettimeofday");
if (c->session != NULL) {
memcpy(&c->session->activity_time,
&c->activity_time,
sizeof c->session->activity_time);
}
tty_start_tty(&c->tty);
server_redraw_client(c);