Browse Source

rockminer: Skip read timeout after short reads

Luke Dashjr 11 years ago
parent
commit
dfdda97c8a
1 changed files with 3 additions and 1 deletions
  1. 3 1
      driver-rockminer.c

+ 3 - 1
driver-rockminer.c

@@ -385,12 +385,14 @@ void rockminer_poll(struct thr_info * const master_thr)
 		}
 		}
 	}
 	}
 	
 	
-	while (true)
+	bool maybe_more_to_read = true;
+	while (maybe_more_to_read)
 	{
 	{
 		size_t buf_read_sz = sizeof(buf) - (master_chip->incomplete_reply_sz ? ROCKMINER_REPLY_SIZE : 0);
 		size_t buf_read_sz = sizeof(buf) - (master_chip->incomplete_reply_sz ? ROCKMINER_REPLY_SIZE : 0);
 		rsz = rockminer_read(fd, &buf[master_chip->incomplete_reply_sz], buf_read_sz);
 		rsz = rockminer_read(fd, &buf[master_chip->incomplete_reply_sz], buf_read_sz);
 		if (rsz <= 0)
 		if (rsz <= 0)
 			break;
 			break;
+		maybe_more_to_read = (rsz == buf_read_sz);
 		if (master_chip->incomplete_reply_sz)
 		if (master_chip->incomplete_reply_sz)
 		{
 		{
 			memcpy(buf, master_chip->incomplete_reply, master_chip->incomplete_reply_sz);
 			memcpy(buf, master_chip->incomplete_reply, master_chip->incomplete_reply_sz);