call this directly if wanted. This can be called multiple times for
one file descriptor to set different iomasks. */
-void silc_schedule_set_listen_fd(int fd, unsigned int iomask)
+void silc_schedule_set_listen_fd(int fd, uint32 iomask)
{
assert(schedule.valid != FALSE);
assert(fd < schedule.fd_list.max_fd);
tasks. The select() listens to these file descriptors. */
SILC_SCHEDULE_SELECT_TASKS;
- if (schedule.max_fd == -1) {
- /*SILC_LOG_ERROR(("Nothing to listen, exiting"));*/
+ if (schedule.max_fd == -1 && !schedule.timeout)
return FALSE;
- }
if (schedule.timeout) {
SILC_LOG_DEBUG(("timeout: sec=%d, usec=%d", schedule.timeout->tv_sec,
&schedule.out, 0, schedule.timeout)) {
case -1:
/* Error */
+ if (errno == EINTR)
+ break;
SILC_LOG_ERROR(("Error in select(): %s", strerror(errno)));
break;
case 0:
}
/* Start the scheduler loop */
- while (silc_schedule_one(-1)) ;
+ while (silc_schedule_one(-1))
+ ;
}