Avoid flushing amid packet on sudden connection termination

This commit is contained in:
Andrey Borodin 2019-05-14 16:45:53 +05:00
parent 538042916f
commit f803b88ae5
1 changed files with 3 additions and 3 deletions

View File

@ -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);