From b222c16a38c27a77cacd004500b9cf2c067a89d5 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 9 Jul 2011 13:15:39 +0200 Subject: [PATCH] qio: naive fixing attempt on issue #64 --- sys/src/9/port/qio.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/src/9/port/qio.c b/sys/src/9/port/qio.c index 76b04be2b..aa4de59f3 100644 --- a/sys/src/9/port/qio.c +++ b/sys/src/9/port/qio.c @@ -1156,8 +1156,6 @@ qnotfull(void *a) return q->len < q->limit || (q->state & Qclosed); } -ulong noblockcnt; - /* * add a block to a queue obeying flow control */ @@ -1191,16 +1189,19 @@ qbwrite(Queue *q, Block *b) error(q->err); } - /* if nonblocking, don't queue over the limit */ + /* don't queue over the limit */ if(q->len >= q->limit){ if(q->noblock){ iunlock(q); freeb(b); - noblockcnt += n; qunlock(&q->wlock); poperror(); return n; } + if(q->len >= q->limit*2){ + iunlock(q); + error(Egreg); + } } /* queue the block */