Mercurial > repos > blastem
comparison event_log.c @ 1973:cd163b230cf9
Fix handling of remote disconnects
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 08 May 2020 15:17:47 -0700 |
parents | f2d37131840e |
children | 04b79a725b7f |
comparison
equal
deleted
inserted
replaced
1972:f2d37131840e | 1973:cd163b230cf9 |
---|---|
251 while (sent && output_stream.next_out > remote_send_progress[i]) | 251 while (sent && output_stream.next_out > remote_send_progress[i]) |
252 { | 252 { |
253 sent = send(remotes[i], remote_send_progress[i], output_stream.next_out - remote_send_progress[i], 0); | 253 sent = send(remotes[i], remote_send_progress[i], output_stream.next_out - remote_send_progress[i], 0); |
254 if (sent >= 0) { | 254 if (sent >= 0) { |
255 remote_send_progress[i] += sent; | 255 remote_send_progress[i] += sent; |
256 } else if (socket_error_is_wouldblock()) { | 256 } else if (!socket_error_is_wouldblock()) { |
257 socket_close(remotes[i]); | 257 socket_close(remotes[i]); |
258 remotes[i] = remotes[num_remotes-1]; | 258 remotes[i] = remotes[num_remotes-1]; |
259 remote_send_progress[i] = remote_send_progress[num_remotes-1]; | 259 remote_send_progress[i] = remote_send_progress[num_remotes-1]; |
260 remote_needs_state[i] = remote_needs_state[num_remotes-1]; | 260 remote_needs_state[i] = remote_needs_state[num_remotes-1]; |
261 num_remotes--; | 261 num_remotes--; |
262 if (!num_remotes) { | |
263 //last remote disconnected, reset buffers/deflate | |
264 fully_active = 0; | |
265 deflateReset(&output_stream); | |
266 output_stream.next_out = compressed; | |
267 output_stream.avail_out = compressed_storage; | |
268 buffer.size = 0; | |
269 } | |
262 i--; | 270 i--; |
263 break; | 271 break; |
264 } | 272 } |
265 if (remote_send_progress[i] > min_progress) { | 273 if (remote_send_progress[i] > min_progress) { |
266 min_progress = remote_send_progress[i]; | 274 min_progress = remote_send_progress[i]; |