Scale the DNS random scket pool on the value of dns-forward-max.

This commit is contained in:
Simon Kelley
2021-03-26 22:02:04 +00:00
parent 4a8c098840
commit ea28d0ef8a
5 changed files with 21 additions and 10 deletions

View File

@@ -2218,7 +2218,7 @@ int allocate_rfd(struct randfd_list **fdlp, struct server *serv)
/* limit the number of sockets we have open to avoid starvation of
(eg) TFTP. Once we have a reasonable number, randomness should be OK */
for (i = 0; i < RANDOM_SOCKS; i++)
for (i = 0; i < daemon->numrrand; i++)
if (daemon->randomsocks[i].refcount == 0)
{
if ((fd = random_sock(serv)) != -1)
@@ -2233,9 +2233,9 @@ int allocate_rfd(struct randfd_list **fdlp, struct server *serv)
/* No free ones or cannot get new socket, grab an existing one */
if (!rfd)
for (j = 0; j < RANDOM_SOCKS; j++)
for (j = 0; j < daemon->numrrand; j++)
{
i = (j + finger) % RANDOM_SOCKS;
i = (j + finger) % daemon->numrrand;
if (daemon->randomsocks[i].refcount != 0 &&
server_isequal(serv, daemon->randomsocks[i].serv) &&
daemon->randomsocks[i].refcount != 0xfffe)
@@ -2247,7 +2247,7 @@ int allocate_rfd(struct randfd_list **fdlp, struct server *serv)
}
}
if (j == RANDOM_SOCKS)
if (j == daemon->numrrand)
{
struct randfd_list *rfl_poll;
@@ -2538,7 +2538,7 @@ void server_gone(struct server *server)
/* If any random socket refers to this server, NULL the reference.
No more references to the socket will be created in the future. */
for (i = 0; i < RANDOM_SOCKS; i++)
for (i = 0; i < daemon->numrrand; i++)
if (daemon->randomsocks[i].refcount != 0 && daemon->randomsocks[i].serv == server)
daemon->randomsocks[i].serv = NULL;