From d5269a2eedecc57b3ead2e502a729821aa7e2c3c Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Fri, 8 Jul 2011 21:51:40 +0000 Subject: [PATCH] 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. --- screen-redraw.c | 4 ++++ server-client.c | 3 +++ 2 files changed, 7 insertions(+) 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");