From 85e8b70625c415e25b332e59152f6383a49afa5d Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Wed, 12 Aug 2009 06:04:28 +0000 Subject: [PATCH] imsg closes the fd after sending, so dup() STDIN_FILENO before passing it to the parent, otherwise TIOCGWINSZ will fail when the window is resized (that could actually be moved into the server but this is more future-proof and avoids breaking the protocol). --- client.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client.c b/client.c index 0bbe6056..359d9482 100644 --- a/client.c +++ b/client.c @@ -44,7 +44,7 @@ client_init(char *path, struct client_ctx *cctx, int cmdflags, int flags) struct msg_identify_data data; struct winsize ws; size_t size; - int fd, mode; + int fd, fd2, mode; char *name, *term; char rpathbuf[MAXPATHLEN]; @@ -119,8 +119,9 @@ server_started: if (strlcpy(data.tty, name, sizeof data.tty) >= sizeof data.tty) fatalx("ttyname failed"); + fd2 = dup(STDIN_FILENO); imsg_compose(&cctx->ibuf, MSG_IDENTIFY, - PROTOCOL_VERSION, -1, STDIN_FILENO, &data, sizeof data); + PROTOCOL_VERSION, -1, fd2, &data, sizeof data); } return (0);