summaryrefslogtreecommitdiffstats
path: root/server-client.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2013-03-25 11:36:59 +0000
committerNicholas Marriott <nicm@openbsd.org>2013-03-25 11:36:59 +0000
commite4c0730bf1e13ac256a58db7ee7a58c36c8980f4 (patch)
treea300aa2437a05691317bcdd382d9a067876eecbc /server-client.c
parent8a40e10d55d5ebedb079ef96aa2619ecf9b45988 (diff)
Use single stdout and stderr for control clients.
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/server-client.c b/server-client.c
index e590d219..13c037d8 100644
--- a/server-client.c
+++ b/server-client.c
@@ -154,7 +154,8 @@ server_client_lost(struct client *c)
evbuffer_free (c->stdin_data);
evbuffer_free (c->stdout_data);
- evbuffer_free (c->stderr_data);
+ if (c->stderr_data != c->stdout_data)
+ evbuffer_free (c->stderr_data);
status_free_jobs(&c->status_new);
status_free_jobs(&c->status_old);
@@ -956,6 +957,8 @@ server_client_msg_identify(
if (data->flags & IDENTIFY_CONTROL) {
c->stdin_callback = control_callback;
+ evbuffer_free(c->stderr_data);
+ c->stderr_data = c->stdout_data;
c->flags |= CLIENT_CONTROL;
if (data->flags & IDENTIFY_TERMIOS)
evbuffer_add_printf(c->stdout_data, "\033P1000p");