mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Fix problem if dnsmasq is started without the stdin,
stdout and stderr file descriptors open. This can manifest itself as 100% CPU use. Thanks to Chris Moore for finding this.
This commit is contained in:
@@ -29,6 +29,14 @@ version 2.60
|
|||||||
Determine VERSION automatically based on git magic:
|
Determine VERSION automatically based on git magic:
|
||||||
release tags or hash values.
|
release tags or hash values.
|
||||||
|
|
||||||
|
Improve start-up speed when reading large hosts files
|
||||||
|
containing many distinct addresses.
|
||||||
|
|
||||||
|
Fix problem if dnsmasq is started without the stdin,
|
||||||
|
stdout and stderr file descriptors open. This can manifest
|
||||||
|
itself as 100% CPU use. Thanks to Chris Moore for finding
|
||||||
|
this.
|
||||||
|
|
||||||
|
|
||||||
version 2.59
|
version 2.59
|
||||||
Fix regression in 2.58 which caused failure to start up
|
Fix regression in 2.58 which caused failure to start up
|
||||||
|
|||||||
@@ -92,10 +92,19 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Close any file descriptors we inherited apart from std{in|out|err} */
|
/* Close any file descriptors we inherited apart from std{in|out|err}
|
||||||
|
|
||||||
|
Ensure that at least stdin, stdout and stderr (fd 0, 1, 2) exist,
|
||||||
|
otherwise file descriptors we create can end up being 0, 1, or 2
|
||||||
|
and then get accidentally closed later when we make 0, 1, and 2
|
||||||
|
open to /dev/null. Normally we'll be started with 0, 1 and 2 open,
|
||||||
|
but it's not guaranteed. By opening /dev/null three times, we
|
||||||
|
ensure that we're not using those fds for real stuff. */
|
||||||
for (i = 0; i < max_fd; i++)
|
for (i = 0; i < max_fd; i++)
|
||||||
if (i != STDOUT_FILENO && i != STDERR_FILENO && i != STDIN_FILENO)
|
if (i != STDOUT_FILENO && i != STDERR_FILENO && i != STDIN_FILENO)
|
||||||
close(i);
|
close(i);
|
||||||
|
else
|
||||||
|
open("/dev/null", O_RDWR);
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_NETWORK
|
#ifdef HAVE_LINUX_NETWORK
|
||||||
netlink_init();
|
netlink_init();
|
||||||
|
|||||||
Reference in New Issue
Block a user