=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-client.c,v retrieving revision 1.369 retrieving revision 1.370 diff -c -r1.369 -r1.370 *** src/usr.bin/tmux/server-client.c 2021/02/11 08:28:45 1.369 --- src/usr.bin/tmux/server-client.c 2021/02/17 07:18:36 1.370 *************** *** 1,4 **** ! /* $OpenBSD: server-client.c,v 1.369 2021/02/11 08:28:45 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server-client.c,v 1.370 2021/02/17 07:18:36 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 307,312 **** --- 307,313 ---- free(c->term_name); free(c->term_type); + tty_term_free_list(c->term_caps, c->term_ncaps); status_free(c); *************** *** 1997,2012 **** datalen = imsg->hdr.len - IMSG_HEADER_SIZE; switch (imsg->hdr.type) { 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_DONE: server_client_dispatch_identify(c, imsg); break; --- 1998,2014 ---- 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_STDIN: case MSG_IDENTIFY_STDOUT: ! case MSG_IDENTIFY_TERM: ! case MSG_IDENTIFY_TERMINFO: ! case MSG_IDENTIFY_TTYNAME: case MSG_IDENTIFY_DONE: server_client_dispatch_identify(c, imsg); break; *************** *** 2199,2204 **** --- 2201,2214 ---- else 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')