mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-23 08:33:17 +01:00
Sync OpenBSD patchset 483:
Change session and client activity and creation time members to have more meaningful names. Also, remove the code to try and update the session activity time for the command client when a command message is received as is pointless because it des not have a session.
This commit is contained in:
parent
a090b78e8d
commit
bbad75fb6c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd-list-sessions.c,v 1.22 2009-10-11 23:38:16 tcunha Exp $ */
|
/* $Id: cmd-list-sessions.c,v 1.23 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -61,7 +61,7 @@ cmd_list_sessions_exec(unused struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
xsnprintf(tmp, sizeof tmp, " (group %u)", idx);
|
xsnprintf(tmp, sizeof tmp, " (group %u)", idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
t = s->tv.tv_sec;
|
t = s->creation_time.tv_sec;
|
||||||
tim = ctime(&t);
|
tim = ctime(&t);
|
||||||
*strchr(tim, '\n') = '\0';
|
*strchr(tim, '\n') = '\0';
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd-server-info.c,v 1.32 2009-11-02 21:38:26 tcunha Exp $ */
|
/* $Id: cmd-server-info.c,v 1.33 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -105,7 +105,7 @@ cmd_server_info_exec(unused struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
t = s->tv.tv_sec;
|
t = s->creation_time.tv_sec;
|
||||||
tim = ctime(&t);
|
tim = ctime(&t);
|
||||||
*strchr(tim, '\n') = '\0';
|
*strchr(tim, '\n') = '\0';
|
||||||
|
|
||||||
|
10
cmd.c
10
cmd.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd.c,v 1.127 2009-11-02 21:42:27 tcunha Exp $ */
|
/* $Id: cmd.c,v 1.128 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -361,9 +361,9 @@ cmd_newest_session(struct sessions *ss)
|
|||||||
if ((s = ARRAY_ITEM(ss, i)) == NULL)
|
if ((s = ARRAY_ITEM(ss, i)) == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (tv == NULL || timercmp(&s->tv, tv, >)) {
|
if (tv == NULL || timercmp(&s->creation_time, tv, >)) {
|
||||||
snewest = s;
|
snewest = s;
|
||||||
tv = &s->tv;
|
tv = &s->creation_time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,9 +385,9 @@ cmd_newest_client(void)
|
|||||||
if (c->session == NULL)
|
if (c->session == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (tv == NULL || timercmp(&c->tv, tv, >)) {
|
if (tv == NULL || timercmp(&c->creation_time, tv, >)) {
|
||||||
cnewest = c;
|
cnewest = c;
|
||||||
tv = &c->tv;
|
tv = &c->creation_time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: server-client.c,v 1.10 2009-10-28 23:14:15 tcunha Exp $ */
|
/* $Id: server-client.c,v 1.11 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -60,7 +60,7 @@ server_client_create(int fd)
|
|||||||
c->references = 0;
|
c->references = 0;
|
||||||
imsg_init(&c->ibuf, fd);
|
imsg_init(&c->ibuf, fd);
|
||||||
|
|
||||||
if (gettimeofday(&c->tv, NULL) != 0)
|
if (gettimeofday(&c->creation_time, NULL) != 0)
|
||||||
fatal("gettimeofday failed");
|
fatal("gettimeofday failed");
|
||||||
|
|
||||||
ARRAY_INIT(&c->prompt_hdata);
|
ARRAY_INIT(&c->prompt_hdata);
|
||||||
@ -260,18 +260,19 @@ server_client_handle_data(struct client *c)
|
|||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
struct screen *s;
|
struct screen *s;
|
||||||
struct options *oo;
|
struct options *oo;
|
||||||
struct timeval tv;
|
struct timeval tv_add, tv_now;
|
||||||
struct key_binding *bd;
|
struct key_binding *bd;
|
||||||
struct keylist *keylist;
|
struct keylist *keylist;
|
||||||
struct mouse_event mouse;
|
struct mouse_event mouse;
|
||||||
int key, status, xtimeout, mode, isprefix;
|
int key, status, xtimeout, mode, isprefix;
|
||||||
u_int i;
|
u_int i;
|
||||||
|
|
||||||
|
/* Check and update repeat flag. */
|
||||||
|
if (gettimeofday(&tv_now, NULL) != 0)
|
||||||
|
fatal("gettimeofday failed");
|
||||||
xtimeout = options_get_number(&c->session->options, "repeat-time");
|
xtimeout = options_get_number(&c->session->options, "repeat-time");
|
||||||
if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
|
if (xtimeout != 0 && c->flags & CLIENT_REPEAT) {
|
||||||
if (gettimeofday(&tv, NULL) != 0)
|
if (timercmp(&tv_now, &c->repeat_timer, >))
|
||||||
fatal("gettimeofday failed");
|
|
||||||
if (timercmp(&tv, &c->repeat_timer, >))
|
|
||||||
c->flags &= ~(CLIENT_PREFIX|CLIENT_REPEAT);
|
c->flags &= ~(CLIENT_PREFIX|CLIENT_REPEAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,12 +281,14 @@ server_client_handle_data(struct client *c)
|
|||||||
while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
|
while (tty_keys_next(&c->tty, &key, &mouse) == 0) {
|
||||||
if (c->session == NULL)
|
if (c->session == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c->session->activity = time(NULL);
|
|
||||||
w = c->session->curw->window;
|
w = c->session->curw->window;
|
||||||
wp = w->active; /* could die */
|
wp = w->active; /* could die */
|
||||||
oo = &c->session->options;
|
oo = &c->session->options;
|
||||||
|
|
||||||
|
/* Update activity timer. */
|
||||||
|
memcpy(&c->session->activity_time,
|
||||||
|
&tv_now, sizeof c->session->activity_time);
|
||||||
|
|
||||||
/* Special case: number keys jump to pane in identify mode. */
|
/* Special case: number keys jump to pane in identify mode. */
|
||||||
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
|
if (c->flags & CLIENT_IDENTIFY && key >= '0' && key <= '9') {
|
||||||
wp = window_pane_at_index(w, key - '0');
|
wp = window_pane_at_index(w, key - '0');
|
||||||
@ -363,11 +366,9 @@ server_client_handle_data(struct client *c)
|
|||||||
if (xtimeout != 0 && bd->can_repeat) {
|
if (xtimeout != 0 && bd->can_repeat) {
|
||||||
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;
|
c->flags |= CLIENT_PREFIX|CLIENT_REPEAT;
|
||||||
|
|
||||||
tv.tv_sec = xtimeout / 1000;
|
tv_add.tv_sec = xtimeout / 1000;
|
||||||
tv.tv_usec = (xtimeout % 1000) * 1000L;
|
tv_add.tv_usec = (xtimeout % 1000) * 1000L;
|
||||||
if (gettimeofday(&c->repeat_timer, NULL) != 0)
|
timeradd(&tv_now, &tv_add, &c->repeat_timer);
|
||||||
fatal("gettimeofday failed");
|
|
||||||
timeradd(&c->repeat_timer, &tv, &c->repeat_timer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dispatch the command. */
|
/* Dispatch the command. */
|
||||||
@ -580,11 +581,14 @@ server_client_msg_dispatch(struct client *c)
|
|||||||
if (!(c->flags & CLIENT_SUSPENDED))
|
if (!(c->flags & CLIENT_SUSPENDED))
|
||||||
break;
|
break;
|
||||||
c->flags &= ~CLIENT_SUSPENDED;
|
c->flags &= ~CLIENT_SUSPENDED;
|
||||||
|
|
||||||
|
if (c->session != NULL &&
|
||||||
|
gettimeofday(&c->session->activity_time, NULL) != 0)
|
||||||
|
fatal("gettimeofday failed");
|
||||||
|
|
||||||
tty_start_tty(&c->tty);
|
tty_start_tty(&c->tty);
|
||||||
server_redraw_client(c);
|
server_redraw_client(c);
|
||||||
recalculate_sizes();
|
recalculate_sizes();
|
||||||
if (c->session != NULL)
|
|
||||||
c->session->activity = time(NULL);
|
|
||||||
break;
|
break;
|
||||||
case MSG_ENVIRON:
|
case MSG_ENVIRON:
|
||||||
if (datalen != sizeof environdata)
|
if (datalen != sizeof environdata)
|
||||||
@ -664,9 +668,6 @@ server_client_msg_command(struct client *c, struct msg_command_data *data)
|
|||||||
int argc;
|
int argc;
|
||||||
char **argv, *cause;
|
char **argv, *cause;
|
||||||
|
|
||||||
if (c->session != NULL)
|
|
||||||
c->session->activity = time(NULL);
|
|
||||||
|
|
||||||
ctx.error = server_client_msg_error;
|
ctx.error = server_client_msg_error;
|
||||||
ctx.print = server_client_msg_print;
|
ctx.print = server_client_msg_print;
|
||||||
ctx.info = server_client_msg_info;
|
ctx.info = server_client_msg_info;
|
||||||
|
12
server.c
12
server.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: server.c,v 1.215 2009-11-02 21:39:34 tcunha Exp $ */
|
/* $Id: server.c,v 1.216 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -568,12 +568,13 @@ server_lock_server(void)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (s->flags & SESSION_UNATTACHED) {
|
if (s->flags & SESSION_UNATTACHED) {
|
||||||
s->activity = time(NULL);
|
if (gettimeofday(&s->activity_time, NULL) != 0)
|
||||||
|
fatal("gettimeofday failed");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
timeout = options_get_number(&s->options, "lock-after-time");
|
timeout = options_get_number(&s->options, "lock-after-time");
|
||||||
if (timeout <= 0 || t <= s->activity + timeout)
|
if (timeout <= 0 || t <= s->activity_time.tv_sec + timeout)
|
||||||
return; /* not timed out */
|
return; /* not timed out */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -596,12 +597,13 @@ server_lock_sessions(void)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (s->flags & SESSION_UNATTACHED) {
|
if (s->flags & SESSION_UNATTACHED) {
|
||||||
s->activity = time(NULL);
|
if (gettimeofday(&s->activity_time, NULL) != 0)
|
||||||
|
fatal("gettimeofday failed");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
timeout = options_get_number(&s->options, "lock-after-time");
|
timeout = options_get_number(&s->options, "lock-after-time");
|
||||||
if (timeout > 0 && t > s->activity + timeout) {
|
if (timeout > 0 && t > s->activity_time.tv_sec + timeout) {
|
||||||
server_lock_session(s);
|
server_lock_session(s);
|
||||||
recalculate_sizes();
|
recalculate_sizes();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: session.c,v 1.69 2009-10-11 23:38:16 tcunha Exp $ */
|
/* $Id: session.c,v 1.70 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -125,10 +125,10 @@ session_create(const char *name, const char *cmd, const char *cwd,
|
|||||||
s = xmalloc(sizeof *s);
|
s = xmalloc(sizeof *s);
|
||||||
s->references = 0;
|
s->references = 0;
|
||||||
s->flags = 0;
|
s->flags = 0;
|
||||||
s->activity = time(NULL);
|
|
||||||
|
|
||||||
if (gettimeofday(&s->tv, NULL) != 0)
|
if (gettimeofday(&s->creation_time, NULL) != 0)
|
||||||
fatal("gettimeofday failed");
|
fatal("gettimeofday failed");
|
||||||
|
memcpy(&s->activity_time, &s->creation_time, sizeof s->activity_time);
|
||||||
|
|
||||||
s->curw = NULL;
|
s->curw = NULL;
|
||||||
TAILQ_INIT(&s->lastw);
|
TAILQ_INIT(&s->lastw);
|
||||||
|
10
tmux.h
10
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.493 2009-11-04 22:39:20 tcunha Exp $ */
|
/* $Id: tmux.h,v 1.494 2009-11-04 22:42:31 tcunha Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -920,8 +920,9 @@ TAILQ_HEAD(session_groups, session_group);
|
|||||||
|
|
||||||
struct session {
|
struct session {
|
||||||
char *name;
|
char *name;
|
||||||
struct timeval tv;
|
|
||||||
time_t activity;
|
struct timeval creation_time;
|
||||||
|
struct timeval activity_time;
|
||||||
|
|
||||||
u_int sx;
|
u_int sx;
|
||||||
u_int sy;
|
u_int sy;
|
||||||
@ -1059,7 +1060,8 @@ struct mouse_event {
|
|||||||
/* Client connection. */
|
/* Client connection. */
|
||||||
struct client {
|
struct client {
|
||||||
struct imsgbuf ibuf;
|
struct imsgbuf ibuf;
|
||||||
struct timeval tv;
|
|
||||||
|
struct timeval creation_time;
|
||||||
|
|
||||||
struct environ environ;
|
struct environ environ;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user