summaryrefslogtreecommitdiffstats
path: root/server-client.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2020-06-02 11:29:48 +0100
committerThomas Adam <thomas@xteddy.org>2020-06-02 11:29:48 +0100
commit31a51cae1dc420281bd3c51c2f0521668ad4e25d (patch)
tree48699668aa6b89ee41a9960d871e05fa9304309c /server-client.c
parent191a836560f1b1996c4976eb496b27a6d428ba21 (diff)
parentf3931497f8aee291bce132fb106cedb55c5b3fa9 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/server-client.c b/server-client.c
index b3394e65..745414e1 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1508,6 +1508,7 @@ server_client_check_pane_buffer(struct window_pane *wp)
struct window_pane_offset *wpo;
int off = 1, flag;
u_int attached_clients = 0;
+ size_t new_size;
/*
* Work out the minimum used size. This is the most that can be removed
@@ -1533,12 +1534,15 @@ server_client_check_pane_buffer(struct window_pane *wp)
if (!flag)
off = 0;
- log_debug("%s: %s has %zu bytes used for %%%u", __func__,
- c->name, wpo->used - wp->base_offset, wp->id);
- if (wpo->used - wp->base_offset > SERVER_CLIENT_PANE_LIMIT) {
+ window_pane_get_new_data(wp, wpo, &new_size);
+ log_debug("%s: %s has %zu bytes used and %zu left for %%%u",
+ __func__, c->name, wpo->used - wp->base_offset, new_size,
+ wp->id);
+ if (new_size > SERVER_CLIENT_PANE_LIMIT) {
control_flush(c);
c->flags |= CLIENT_EXIT;
- } else if (wpo->used < minimum)
+ }
+ if (wpo->used < minimum)
minimum = wpo->used;
}
if (attached_clients == 0)
@@ -1773,7 +1777,9 @@ server_client_check_exit(struct client *c)
struct client_file *cf;
const char *name = c->exit_session;
- if ((c->flags & CLIENT_EXITED) || (~c->flags & CLIENT_EXIT))
+ if (c->flags & (CLIENT_DEAD|CLIENT_EXITED))
+ return;
+ if (~c->flags & CLIENT_EXIT)
return;
if (c->flags & CLIENT_CONTROL) {