diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-06-07 23:02:26 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-06-07 23:02:26 +0100 |
commit | e13c1e53209a6ede0fa334b3e9e9c8b41e6712c0 (patch) | |
tree | 473ea274eed63dd82aa4d35a19c76d0c0297d30d | |
parent | c91680822df84f6db2f8ce650e457d59d37f3856 (diff) | |
parent | e37f34facc05c3ba146d4158cc7af23f6886fecd (diff) | |
download | rtmux-e13c1e53209a6ede0fa334b3e9e9c8b41e6712c0.tar.gz rtmux-e13c1e53209a6ede0fa334b3e9e9c8b41e6712c0.tar.bz2 rtmux-e13c1e53209a6ede0fa334b3e9e9c8b41e6712c0.zip |
Merge branch 'obsd-master'
-rw-r--r-- | server-client.c | 6 | ||||
-rw-r--r-- | server.c | 10 | ||||
-rw-r--r-- | tmux.h | 2 |
3 files changed, 11 insertions, 7 deletions
diff --git a/server-client.c b/server-client.c index 7381eb52..24fa147e 100644 --- a/server-client.c +++ b/server-client.c @@ -1521,7 +1521,9 @@ server_client_click_timer(__unused int fd, __unused short events, void *data) static void server_client_check_exit(struct client *c) { - if (!(c->flags & CLIENT_EXIT)) + if (~c->flags & CLIENT_EXIT) + return; + if (c->flags & CLIENT_EXITED) return; if (EVBUFFER_LENGTH(c->stdin_data) != 0) @@ -1534,7 +1536,7 @@ server_client_check_exit(struct client *c) if (c->flags & CLIENT_ATTACHED) notify_client("client-detached", c); proc_send(c->peer, MSG_EXIT, -1, &c->retval, sizeof c->retval); - c->flags &= ~CLIENT_EXIT; + c->flags |= CLIENT_EXITED; } /* Redraw timer callback. */ @@ -43,7 +43,7 @@ struct clients clients; struct tmuxproc *server_proc; -static int server_fd; +static int server_fd = -1; static int server_exit; static struct event server_ev_accept; @@ -207,11 +207,10 @@ server_start(struct tmuxproc *client, struct event_base *base, int lockfd, cmdq_append(c, cmdq_get_error(cause)); free(cause); c->flags |= CLIENT_EXIT; - } + } else + start_cfg(); - start_cfg(); server_add_accept(0); - proc_loop(server_proc, server_loop); job_kill_all(); @@ -363,6 +362,9 @@ server_add_accept(int timeout) { struct timeval tv = { timeout, 0 }; + if (server_fd == -1) + return; + if (event_initialized(&server_ev_accept)) event_del(&server_ev_accept); @@ -1492,7 +1492,7 @@ struct client { #define CLIENT_REPEAT 0x20 #define CLIENT_SUSPENDED 0x40 #define CLIENT_ATTACHED 0x80 -/* 0x100 unused */ +#define CLIENT_EXITED 0x100 #define CLIENT_DEAD 0x200 #define CLIENT_REDRAWBORDERS 0x400 #define CLIENT_READONLY 0x800 |