1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-24 21:44:38 +00:00

If we get a restart message in avalon_gets still check if there's a receive message to parse first without a timeout before returning AVA_GETS_RESTART.

This commit is contained in:
Con Kolivas 2013-04-08 09:04:10 +10:00
parent 0ea9d68d67
commit 5e3474b0c8

View File

@ -209,9 +209,17 @@ static inline int avalon_gets(int fd, uint8_t *buf, struct thr_info *thr,
ssize_t ret = 0;
while (true) {
struct timeval timeout = {0, 100000};
struct timeval timeout;
fd_set rd;
timeout.tv_sec = 0;
/* If we get a restart message, still check if there's
* anything in the buffer waiting to be parsed */
if (unlikely(thr->work_restart))
timeout.tv_usec = 0;
else
timeout.tv_usec = 100000;
FD_ZERO(&rd);
FD_SET(fd, &rd);
ret = select(fd + 1, &rd, NULL, NULL, &timeout);
@ -232,7 +240,7 @@ static inline int avalon_gets(int fd, uint8_t *buf, struct thr_info *thr,
continue;
}
if (thr->work_restart) {
if (unlikely(thr->work_restart)) {
applog(LOG_DEBUG, "Avalon: Work restart");
return AVA_GETS_RESTART;
}