summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2011-07-08 21:51:40 +0000
committerNicholas Marriott <nicm@openbsd.org>2011-07-08 21:51:40 +0000
commitd5269a2eedecc57b3ead2e502a729821aa7e2c3c (patch)
tree9db8c3e6465c85cb5eb0bd13ce557df2badd65a3
parenta8e9654b65c7b6de5240f9df23f0d12bca8e02ec (diff)
Do not continue to send data to suspended/locked clients or there will
be a huge rush of it after they are resumed/unlocked. The main output path was fine but status line updates and the terminal state reset code were missed.
-rw-r--r--screen-redraw.c4
-rw-r--r--server-client.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/screen-redraw.c b/screen-redraw.c
index 2024e675..1abd719c 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -176,6 +176,10 @@ screen_redraw_screen(struct client *c, int status_only, int borders_only)
u_int i, j, type;
int status, fg, bg;
+ /* Suspended clients should not be updated. */
+ if (c->flags & CLIENT_SUSPENDED)
+ return;
+
/* Get status line, er, status. */
if (c->message_string != NULL || c->prompt_string != NULL)
status = 1;
diff --git a/server-client.c b/server-client.c
index f4dd1fb2..9dfcac02 100644
--- a/server-client.c
+++ b/server-client.c
@@ -474,6 +474,9 @@ server_client_reset_state(struct client *c)
struct options *wo = &w->options;
int status, mode;
+ if (c->flags & CLIENT_SUSPENDED)
+ return;
+
tty_region(&c->tty, 0, c->tty.sy - 1);
status = options_get_number(oo, "status");