summaryrefslogtreecommitdiff
path: root/relay
diff options
context:
space:
mode:
authorShane Kerr <shane@isc.org>2006-03-27 09:45:47 +0000
committerShane Kerr <shane@isc.org>2006-03-27 09:45:47 +0000
commit185d16f9f9ba753cfcf7903030c6895f1b9b2879 (patch)
tree31208801bec995825be8f84ed3c826503fe03d05 /relay
parentba65ea235f2d7b5533a8d8f63540a253525c349b (diff)
downloadisc-dhcp-185d16f9f9ba753cfcf7903030c6895f1b9b2879.tar.gz
Changes as documented in ticket #15937 (stdio file descriptor fixes).
Diffstat (limited to 'relay')
-rw-r--r--relay/dhcrelay.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
index 4abc5250..15c0b13e 100644
--- a/relay/dhcrelay.c
+++ b/relay/dhcrelay.c
@@ -34,7 +34,7 @@
#ifndef lint
static char ocopyright[] =
-"$Id: dhcrelay.c,v 1.55 2006/02/27 23:56:13 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
+"$Id: dhcrelay.c,v 1.56 2006/03/27 09:45:47 shane Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -101,6 +101,7 @@ int main (argc, argv, envp)
int argc;
char **argv, **envp;
{
+ int fd;
int i;
struct servent *ent;
struct server_list *sp = (struct server_list *)0;
@@ -110,15 +111,18 @@ int main (argc, argv, envp)
char *s;
struct interface_info *tmp = (struct interface_info *)0;
- /* Make sure we have stdin, stdout and stderr. */
- i = open ("/dev/null", O_RDWR);
- if (i == 0)
- i = open ("/dev/null", O_RDWR);
- if (i == 1) {
- i = open ("/dev/null", O_RDWR);
- log_perror = 0; /* No sense logging to /dev/null. */
- } else if (i != -1)
- close (i);
+ /* Make sure that file descriptors 0 (stdin), 1, (stdout), and
+ 2 (stderr) are open. To do this, we assume that when we
+ open a file the lowest available file decriptor is used. */
+ fd = open ("/dev/null", O_RDWR);
+ if (fd == 0)
+ fd = open ("/dev/null", O_RDWR);
+ if (fd == 1)
+ fd = open ("/dev/null", O_RDWR);
+ if (fd == 2)
+ log_perror = 0; /* No sense logging to /dev/null. */
+ else if (fd != -1)
+ close (fd);
#ifdef SYSLOG_4_2
openlog ("dhcrelay", LOG_NDELAY);