diff options
Diffstat (limited to 'usr.bin/tmux/server-client.c')
-rw-r--r-- | usr.bin/tmux/server-client.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index 10f268a05c4..a06035c698a 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.215 2017/03/09 22:00:46 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.216 2017/04/05 10:49:46 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -99,15 +99,12 @@ server_client_check_nested(struct client *c) struct environ_entry *envent; struct window_pane *wp; - if (c->tty.path == NULL) - return (0); - envent = environ_find(c->environ, "TMUX"); if (envent == NULL || *envent->value == '\0') return (0); RB_FOREACH(wp, window_pane_tree, &all_window_panes) { - if (strcmp(wp->tty, c->tty.path) == 0) + if (strcmp(wp->tty, c->ttyname) == 0) return (1); } return (0); @@ -322,8 +319,10 @@ server_client_free(__unused int fd, __unused short events, void *arg) if (!TAILQ_EMPTY(&c->queue)) fatalx("queue not empty"); - if (c->references == 0) + if (c->references == 0) { + free((void *)c->name); free(c); + } } /* Detach a client. */ @@ -1470,6 +1469,7 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg) const char *data, *home; size_t datalen; int flags; + char *name; if (c->flags & CLIENT_IDENTIFIED) fatalx("out-of-order identify message"); @@ -1535,6 +1535,13 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg) return; c->flags |= CLIENT_IDENTIFIED; + if (*c->ttyname != '\0') + name = xstrdup(c->ttyname); + else + xasprintf(&name, "client-%ld", (long)c->pid); + c->name = name; + log_debug("client %p name is %s", c, c->name); + if (c->flags & CLIENT_CONTROL) { c->stdin_callback = control_callback; @@ -1685,7 +1692,7 @@ server_client_add_message(struct client *c, const char *fmt, ...) xvasprintf(&s, fmt, ap); va_end(ap); - log_debug("%s: message %s", c->tty.path, s); + log_debug("message %s (client %p)", s, c); msg = xcalloc(1, sizeof *msg); msg->msg_time = time(NULL); |