qio: naive fixing attempt on issue #64

cinap_lenrek 2011-07-09 13:15:39 +02:00
parent d1dcdf2df3
commit b222c16a38
1 changed files with 5 additions and 4 deletions

View File

@ -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 */