mirror of
https://github.com/nmap/nmap.git
synced 2025-12-10 09:49:05 +00:00
Hopefully fixes the interrupted system call fatal
behaviour unearthed by the mass_ping -> ultra_scan migration.
This commit is contained in:
8
tcpip.cc
8
tcpip.cc
@@ -1831,6 +1831,8 @@ int pcap_select(pcap_t *p, struct timeval *timeout)
|
|||||||
int fd, ret;
|
int fd, ret;
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
|
|
||||||
|
again:
|
||||||
|
|
||||||
if ((fd = my_pcap_get_selectable_fd(p)) == -1)
|
if ((fd = my_pcap_get_selectable_fd(p)) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -1839,8 +1841,12 @@ int pcap_select(pcap_t *p, struct timeval *timeout)
|
|||||||
|
|
||||||
ret = select(fd + 1, &rfds, NULL, NULL, timeout);
|
ret = select(fd + 1, &rfds, NULL, NULL, timeout);
|
||||||
|
|
||||||
if (ret == -1)
|
if (ret == -1) {
|
||||||
|
if (errno == EINTR)
|
||||||
|
goto again;
|
||||||
|
else
|
||||||
fatal("Your system does not support select()ing on pcap devices (%s). PLEASE REPORT THIS ALONG WITH DETAILED SYSTEM INFORMATION TO THE nmap-dev MAILING LIST!", strerror(errno));
|
fatal("Your system does not support select()ing on pcap devices (%s). PLEASE REPORT THIS ALONG WITH DETAILED SYSTEM INFORMATION TO THE nmap-dev MAILING LIST!", strerror(errno));
|
||||||
|
} while (errno == EINTR);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user