From bf35441608b05d52627215aa70bd52d9460812d4 Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 20 Oct 2013 17:28:43 +0000 Subject: Do not run any command line command from the client which starts the server until after the configuration file completes. This prevents it racing against run-shell or if-shell in .tmux.conf that run in the background. --- server-client.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index b6d4870d..82d840a0 100644 --- a/server-client.c +++ b/server-client.c @@ -155,8 +155,8 @@ server_client_lost(struct client *c) free(c->ttyname); free(c->term); - evbuffer_free (c->stdin_data); - evbuffer_free (c->stdout_data); + evbuffer_free(c->stdin_data); + evbuffer_free(c->stdout_data); if (c->stderr_data != c->stdout_data) evbuffer_free (c->stderr_data); @@ -932,7 +932,10 @@ server_client_msg_command(struct client *c, struct imsg *imsg) } cmd_free_argv(argc, argv); - cmdq_run(c->cmdq, cmdlist); + if (c != cfg_client || cfg_finished) + cmdq_run(c->cmdq, cmdlist); + else + cmdq_append(c->cmdq, cmdlist); cmd_list_free(cmdlist); return; -- cgit From 7624800ddc8fa8e51164dc7c615894c086deabef Mon Sep 17 00:00:00 2001 From: benno Date: Wed, 13 Nov 2013 20:43:36 +0000 Subject: from nicm: : handle msgbuf_write() returning EAGAIN --- server-client.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index 82d840a0..c6257edb 100644 --- a/server-client.c +++ b/server-client.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -222,7 +223,8 @@ server_client_callback(int fd, short events, void *data) return; if (fd == c->ibuf.fd) { - if (events & EV_WRITE && msgbuf_write(&c->ibuf.w) < 0) + if (events & EV_WRITE && msgbuf_write(&c->ibuf.w) < 0 && + errno != EAGAIN) goto client_lost; if (c->flags & CLIENT_BAD) { -- cgit