From e37c7be93e131e8f73b96e5b761a983b36efc420 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Fri, 8 May 2020 15:17:47 -0700 Subject: Fix handling of remote disconnects --- event_log.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'event_log.c') diff --git a/event_log.c b/event_log.c index 041a736..0ef8baa 100644 --- a/event_log.c +++ b/event_log.c @@ -253,12 +253,20 @@ static void flush_socket(void) sent = send(remotes[i], remote_send_progress[i], output_stream.next_out - remote_send_progress[i], 0); if (sent >= 0) { remote_send_progress[i] += sent; - } else if (socket_error_is_wouldblock()) { + } else if (!socket_error_is_wouldblock()) { socket_close(remotes[i]); remotes[i] = remotes[num_remotes-1]; remote_send_progress[i] = remote_send_progress[num_remotes-1]; remote_needs_state[i] = remote_needs_state[num_remotes-1]; num_remotes--; + if (!num_remotes) { + //last remote disconnected, reset buffers/deflate + fully_active = 0; + deflateReset(&output_stream); + output_stream.next_out = compressed; + output_stream.avail_out = compressed_storage; + buffer.size = 0; + } i--; break; } -- cgit v1.2.3