diff --git a/client.c b/client.c index 9ba086de..ae4f5066 100644 --- a/client.c +++ b/client.c @@ -285,7 +285,6 @@ client_main(int argc, char **argv, int flags) /* Set the event and dispatch. */ client_update_event(); - event_add (&client_stdin, NULL); event_dispatch(); /* Print the exit message, if any, and exit. */ @@ -520,6 +519,12 @@ client_dispatch_wait(void *data) event_del(&client_stdin); client_attached = 1; break; + case MSG_STDIN: + if (datalen != 0) + fatalx("bad MSG_STDIN size"); + + event_add(&client_stdin, NULL); + break; case MSG_STDOUT: if (datalen != sizeof stdoutdata) fatalx("bad MSG_STDOUT"); diff --git a/server-fn.c b/server-fn.c index aea0fafe..b21d94a1 100644 --- a/server-fn.c +++ b/server-fn.c @@ -581,5 +581,8 @@ server_set_stdin_callback(struct client *c, void (*cb)(struct client *, int, if (c->stdin_closed) c->stdin_callback (c, 1, c->stdin_callback_data); + + server_write_client(c, MSG_STDIN, NULL, 0); + return (0); }