diff --git a/degesch.c b/degesch.c index 451d429..55fb325 100644 --- a/degesch.c +++ b/degesch.c @@ -1527,10 +1527,20 @@ buffer_send_internal (struct app_context *ctx, struct buffer *buffer, buffer->lines_count++; if (buffer == ctx->current_buffer) + { buffer_line_display (ctx, line, false); - else if (!ctx->isolate_buffers && - (buffer == ctx->global_buffer || - buffer == ctx->current_buffer->server->buffer)) + return; + } + + bool can_leak = false; + if ((buffer == ctx->global_buffer) + || (ctx->current_buffer->type == BUFFER_GLOBAL + && buffer->type == BUFFER_SERVER) + || (ctx->current_buffer->type != BUFFER_GLOBAL + && buffer == ctx->current_buffer->server->buffer)) + can_leak = true; + + if (!ctx->isolate_buffers && can_leak) buffer_line_display (ctx, line, true); else {