Correctly handle failure of pipe() call in swap_to_tcp()

This commit is contained in:
Simon Kelley
2025-01-06 23:16:40 +00:00
parent e24c341068
commit c52653f97c
2 changed files with 7 additions and 7 deletions

View File

@@ -2091,11 +2091,11 @@ int swap_to_tcp(struct frec *forward, time_t now, int status, struct dns_header
if (daemon->tcp_pids[i] == 0 && daemon->tcp_pipes[i] == -1)
break;
/* No slots */
if (i < 0)
return STAT_ABANDONED;
if (pipe(pipefd) == 0 && (p = fork()) != 0)
/* No slots or no pipe */
if (i < 0 || pipe(pipefd) != 0)
return STAT_ABANDONED;`
if ((p = fork()) != 0)
{
close(pipefd[1]); /* parent needs read pipe end. */
if (p == -1)