git: plan9front

Download patch

ref: b222c16a38c27a77cacd004500b9cf2c067a89d5
parent: d1dcdf2df3c69d76b7a6a1b950324ce85942edc3
author: cinap_lenrek <cinap_lenrek@localhost>
date: Sat Jul 9 09:15:39 EDT 2011

qio: naive fixing attempt on issue #64

--- a/sys/src/9/port/qio.c
+++ b/sys/src/9/port/qio.c
@@ -1156,8 +1156,6 @@
 	return q->len < q->limit || (q->state & Qclosed);
 }
 
-ulong noblockcnt;
-
 /*
  *  add a block to a queue obeying flow control
  */
@@ -1191,15 +1189,18 @@
 		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);
 		}
 	}
 
--