diff --git a/ipmitool/lib/helper.c b/ipmitool/lib/helper.c index 7e54ba7..6658ee6 100644 --- a/ipmitool/lib/helper.c +++ b/ipmitool/lib/helper.c @@ -344,7 +344,7 @@ ipmi_open_file(const char * file, int rw) } void -ipmi_start_daemon(void) +ipmi_start_daemon(struct ipmi_intf *intf) { pid_t pid; int fd; @@ -398,10 +398,10 @@ ipmi_start_daemon(void) chdir("/"); umask(0); -#if 0 - for (fd=0; fd<64; fd++) - close(fd); -#endif + for (fd=0; fd<64; fd++) { + if (fd != intf->fd) + close(fd); + } open("/dev/null", O_RDWR); dup(0); diff --git a/ipmitool/src/ipmievd.c b/ipmitool/src/ipmievd.c index 6c785a3..624603a 100644 --- a/ipmitool/src/ipmievd.c +++ b/ipmitool/src/ipmievd.c @@ -667,7 +667,7 @@ ipmievd_main(struct ipmi_event_intf * eintf, int argc, char ** argv) FILE *fp; struct stat st1; - ipmi_start_daemon(); + ipmi_start_daemon(eintf->intf); if (lstat(pidfile, &st1) == 0) { /* already exists, erase first */