From f803b88ae546224e3429f597df802383d508ef16 Mon Sep 17 00:00:00 2001 From: Andrey Borodin Date: Tue, 14 May 2019 16:45:53 +0500 Subject: [PATCH] Avoid flushing amid packet on sudden connection termination --- sources/relay.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/relay.h b/sources/relay.h index 0dbf6a01..9c64a4cc 100644 --- a/sources/relay.h +++ b/sources/relay.h @@ -384,7 +384,7 @@ od_relay_flush(od_relay_t *relay) if (relay->dst == NULL) return OD_OK; - if (! machine_iov_pending(relay->iov)) + if (! machine_iov_pending(relay->iov) && (relay->packet == 0)) return OD_OK; int rc; @@ -392,7 +392,7 @@ od_relay_flush(od_relay_t *relay) if (rc != OD_OK) return rc; - if (! machine_iov_pending(relay->iov)) + if (! machine_iov_pending(relay->iov) && (relay->packet == 0)) return OD_OK; rc = machine_write_start(relay->dst->io, relay->dst->on_write); @@ -401,7 +401,7 @@ od_relay_flush(od_relay_t *relay) for (;;) { - if (! machine_iov_pending(relay->iov)) + if (! machine_iov_pending(relay->iov) && (relay->packet == 0)) break; machine_cond_wait(relay->dst->on_write, UINT32_MAX);