--- bpf.c.orig	2010-02-13 00:31:52.000000000 -0800
+++ bpf.c	2010-02-13 00:33:32.000000000 -0800
@@ -421,9 +421,12 @@
 	 * have arrived to fill the store buffer.
 	 */
 	while (d->bd_hbuf == NULL) {
-		if ((d->bd_immediate || timed_out) && d->bd_slen != 0) {
+		if ((d->bd_immediate || (ap->a_ioflag & IO_NDELAY) || timed_out)
+		    && d->bd_slen != 0) {
 			/*
-			 * A packet(s) either arrived since the previous
+			 * We're in immediate mode, or are reading
+			 * in non-blocking mode, and a packet(s)
+			 * either arrived since the previous
 			 * read or arrived while we were asleep.
 			 * Rotate the buffers and return what's here.
 			 */
