diff -up dhcp-4.1.0/common/discover.c.noipv6 dhcp-4.1.0/common/discover.c --- dhcp-4.1.0/common/discover.c.noipv6 2009-02-18 09:40:45.000000000 -1000 +++ dhcp-4.1.0/common/discover.c 2009-02-18 09:43:53.000000000 -1000 @@ -447,9 +447,11 @@ begin_iface_scan(struct iface_conf_list if (ifaces->fp6 == NULL) { log_error("Error opening '/proc/net/if_inet6' to " "list IPv6 interfaces; %m"); - close(ifaces->sock); + if (ifaces->sock) + close(ifaces->sock); ifaces->sock = -1; - fclose(ifaces->fp); + if (ifaces->fp) + fclose(ifaces->fp); ifaces->fp = NULL; return 0; } @@ -719,7 +721,7 @@ next_iface(struct iface_info *info, int return 1; } #ifdef DHCPv6 - if (!(*err)) { + if (!(*err) && ifaces->fp6) { return next_iface6(info, err, ifaces); } #endif @@ -736,7 +738,8 @@ end_iface_scan(struct iface_conf_list *i close(ifaces->sock); ifaces->sock = -1; #ifdef DHCPv6 - fclose(ifaces->fp6); + if (ifaces->fp6) + fclose(ifaces->fp6); ifaces->fp6 = NULL; #endif }