aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--control.c8
-rw-r--r--server-client.c5
-rw-r--r--tmux.h1
3 files changed, 12 insertions, 2 deletions
diff --git a/control.c b/control.c
index 359d0e78..f75035ef 100644
--- a/control.c
+++ b/control.c
@@ -776,7 +776,6 @@ control_start(struct client *c)
cs->read_event = bufferevent_new(c->fd, control_read_callback,
control_write_callback, control_error_callback, c);
- bufferevent_enable(cs->read_event, EV_READ);
if (c->flags & CLIENT_CONTROLCONTROL)
cs->write_event = cs->read_event;
@@ -793,6 +792,13 @@ control_start(struct client *c)
}
}
+/* Control client ready. */
+void
+control_ready(struct client *c)
+{
+ bufferevent_enable(c->control_state->read_event, EV_READ);
+}
+
/* Discard all output for a client. */
void
control_discard(struct client *c)
diff --git a/server-client.c b/server-client.c
index 7c4c2fdd..864b37b3 100644
--- a/server-client.c
+++ b/server-client.c
@@ -2791,8 +2791,11 @@ server_client_command_done(struct cmdq_item *item, __unused void *data)
if (~c->flags & CLIENT_ATTACHED)
c->flags |= CLIENT_EXIT;
- else if (~c->flags & CLIENT_EXIT)
+ else if (~c->flags & CLIENT_EXIT) {
+ if (c->flags & CLIENT_CONTROL)
+ control_ready(c);
tty_send_requests(&c->tty);
+ }
return (CMD_RETURN_NORMAL);
}
diff --git a/tmux.h b/tmux.h
index 3137ca3b..3f720e50 100644
--- a/tmux.h
+++ b/tmux.h
@@ -3134,6 +3134,7 @@ char *parse_window_name(const char *);
/* control.c */
void control_discard(struct client *);
void control_start(struct client *);
+void control_ready(struct client *);
void control_stop(struct client *);
void control_set_pane_on(struct client *, struct window_pane *);
void control_set_pane_off(struct client *, struct window_pane *);