diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2013-03-11 09:46:18 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2013-03-11 09:46:18 +0000 |
commit | 412ac6bc3a690628f72101494ac88e91c7d3377c (patch) | |
tree | a1b191ce809964d545334f85b5dac9091b5f3884 | |
parent | a6ad44f111a42553ad38a850a0e215914ea1f037 (diff) | |
download | rtmux-412ac6bc3a690628f72101494ac88e91c7d3377c.tar.gz rtmux-412ac6bc3a690628f72101494ac88e91c7d3377c.tar.bz2 rtmux-412ac6bc3a690628f72101494ac88e91c7d3377c.zip |
Use single stdout and stderr for control clients.
-rw-r--r-- | server-client.c | 5 | ||||
-rw-r--r-- | server-fn.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/server-client.c b/server-client.c index b905a7c7..77e6de78 100644 --- a/server-client.c +++ b/server-client.c @@ -153,7 +153,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); @@ -955,6 +956,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"); diff --git a/server-fn.c b/server-fn.c index 4d8a658c..566925f0 100644 --- a/server-fn.c +++ b/server-fn.c @@ -546,6 +546,10 @@ server_push_stderr(struct client *c) struct msg_stderr_data data; size_t size; + if (c->stderr_data == c->stdout_data) { + server_push_stdout(c); + return; + } size = EVBUFFER_LENGTH(c->stderr_data); if (size == 0) return; |