diff options
author | Thomas Adam <thomas@xteddy.org> | 2021-02-17 09:58:51 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2021-02-17 09:58:51 +0000 |
commit | 3a76a5682481804541aaddcce27dfa566a7e4cae (patch) | |
tree | 22a4a12eb4729f66dba95241159ccd661280b28c /server-client.c | |
parent | ce5de765929ea38b68e3fd6c26e554ab0c1e09b1 (diff) | |
parent | af3ffa9c41936078d27b5ba1f96cec67850f98cb (diff) | |
download | rtmux-3a76a5682481804541aaddcce27dfa566a7e4cae.tar.gz rtmux-3a76a5682481804541aaddcce27dfa566a7e4cae.tar.bz2 rtmux-3a76a5682481804541aaddcce27dfa566a7e4cae.zip |
Merge branch 'obsd-master' into master
Diffstat (limited to 'server-client.c')
-rw-r--r-- | server-client.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/server-client.c b/server-client.c index 66ba2c5a..96e1b584 100644 --- a/server-client.c +++ b/server-client.c @@ -304,6 +304,7 @@ server_client_lost(struct client *c) free(c->term_name); free(c->term_type); + tty_term_free_list(c->term_caps, c->term_ncaps); status_free(c); @@ -1994,16 +1995,17 @@ server_client_dispatch(struct imsg *imsg, void *arg) datalen = imsg->hdr.len - IMSG_HEADER_SIZE; switch (imsg->hdr.type) { + case MSG_IDENTIFY_CLIENTPID: + case MSG_IDENTIFY_CWD: + case MSG_IDENTIFY_ENVIRON: case MSG_IDENTIFY_FEATURES: case MSG_IDENTIFY_FLAGS: case MSG_IDENTIFY_LONGFLAGS: - case MSG_IDENTIFY_TERM: - case MSG_IDENTIFY_TTYNAME: - case MSG_IDENTIFY_CWD: case MSG_IDENTIFY_STDIN: case MSG_IDENTIFY_STDOUT: - case MSG_IDENTIFY_ENVIRON: - case MSG_IDENTIFY_CLIENTPID: + case MSG_IDENTIFY_TERM: + case MSG_IDENTIFY_TERMINFO: + case MSG_IDENTIFY_TTYNAME: case MSG_IDENTIFY_DONE: server_client_dispatch_identify(c, imsg); break; @@ -2197,6 +2199,14 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg) c->term_name = xstrdup(data); log_debug("client %p IDENTIFY_TERM %s", c, data); break; + case MSG_IDENTIFY_TERMINFO: + if (datalen == 0 || data[datalen - 1] != '\0') + fatalx("bad MSG_IDENTIFY_TERMINFO string"); + c->term_caps = xreallocarray(c->term_caps, c->term_ncaps + 1, + sizeof *c->term_caps); + c->term_caps[c->term_ncaps++] = xstrdup(data); + log_debug("client %p IDENTIFY_TERMINFO %s", c, data); + break; case MSG_IDENTIFY_TTYNAME: if (datalen == 0 || data[datalen - 1] != '\0') fatalx("bad MSG_IDENTIFY_TTYNAME string"); |