We should check for amount buffered in icarus get_nonce against amount already received.
diff --git a/driver-icarus.c b/driver-icarus.c
index c015448..de5101e 100644
--- a/driver-icarus.c
+++ b/driver-icarus.c
@@ -346,7 +346,7 @@ static int icarus_get_nonce(struct cgpu_info *icarus, unsigned char *buf, struct
copy_time(tv_finish, &read_finish);
// TODO: test if there is more data? to read a 2nd nonce?
- if (amt >= ICARUS_READ_SIZE)
+ if (amt >= read_amount)
return ICA_NONCE_OK;
if (amt > 0) {