diff options
author | yar <yar@FreeBSD.org> | 2006-01-21 12:34:28 +0000 |
---|---|---|
committer | yar <yar@FreeBSD.org> | 2006-01-21 12:34:28 +0000 |
commit | a692e4fc423a0fabe2bef02b6a6dd21c9afde339 (patch) | |
tree | 6bd3ff94e685d3588f95e4c870f56b06f6111d85 /libexec | |
parent | c86031149b98392f2ac755ec253d69e9de5a32d1 (diff) | |
download | FreeBSD-src-a692e4fc423a0fabe2bef02b6a6dd21c9afde339.zip FreeBSD-src-a692e4fc423a0fabe2bef02b6a6dd21c9afde339.tar.gz |
The daemon's child shouldn't go on with the for loop
over ctl_sock's -- it is solely the parent daemon's
job. So just break out of the loop in the child.
MFC after: 5 days
Diffstat (limited to 'libexec')
-rw-r--r-- | libexec/ftpd/ftpd.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c index 9590f78..a5a60a4 100644 --- a/libexec/ftpd/ftpd.c +++ b/libexec/ftpd/ftpd.c @@ -496,16 +496,17 @@ main(int argc, char *argv[], char **envp) (struct sockaddr *)&his_addr, &addrlen); if (fd >= 0) { - if ((pid = fork()) == 0) { - /* child */ - (void) dup2(fd, 0); - (void) dup2(fd, 1); - close(ctl_sock[i]); - } else + if ((pid = fork()) == 0) + break; + else close(fd); } } if (pid == 0) { + /* child */ + (void) dup2(fd, 0); + (void) dup2(fd, 1); + close(ctl_sock[i]); if (pfh != NULL) pidfile_close(pfh); break; |