|
|
@@ -3740,10 +3740,24 @@ static void *submit_work_thread(__maybe_unused void *userdata)
|
|
|
|
|
|
for (sws = write_sws; sws; sws = sws->next) {
|
|
|
int fd = sws->work->pool->sock;
|
|
|
+ if (fd == INVSOCK) {
|
|
|
+ applog(LOG_WARNING, "Stratum pool %u died while share waiting to submit, discarding", sws->work->pool->pool_no);
|
|
|
+ submit_discard_share2("disconnect", sws->work);
|
|
|
+ --wip;
|
|
|
+ ++tsreduce;
|
|
|
+ free_sws(sws);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
FD_SET(fd, &wfds);
|
|
|
if (fd > maxfd)
|
|
|
maxfd = fd;
|
|
|
}
|
|
|
+ if (tsreduce) {
|
|
|
+ mutex_lock(&submitting_lock);
|
|
|
+ total_submitting -= tsreduce;
|
|
|
+ mutex_unlock(&submitting_lock);
|
|
|
+ tsreduce = 0;
|
|
|
+ }
|
|
|
|
|
|
FD_SET(submit_waiting_notifier[0], &rfds);
|
|
|
if (submit_waiting_notifier[0] > maxfd)
|