--- bluez-utils-2.7/pand/main.c 2004-05-09 20:39:43.000000000 +1000 +++ bluez-utils-2.7-4-jc1/pand/main.c 2004-06-27 23:02:00.000000000 +1000 @@ -84,9 +84,10 @@ KILL } modes; -static void run_devup(char *dev, char *dst) +static void run_devup(char *dev, char *dst, int sk, int nsk) { char *argv[4], prog[40]; + struct sigaction sa; sprintf(prog, "%s/%s", PAND_CONFIG_DIR, PAND_DEVUP_CMD); @@ -96,6 +97,15 @@ if (fork()) return; + close(sk); + if (nsk != -1) + close(nsk); + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sigaction(SIGCHLD, &sa, NULL); + sigaction(SIGPIPE, &sa, NULL); + argv[0] = prog; argv[1] = dev; argv[2] = dst; @@ -184,7 +194,7 @@ syslog(LOG_INFO, "New connection from %s %s", str, netdev); - run_devup(netdev, str); + run_devup(netdev, str, sk, nsk); } else { syslog(LOG_ERR, "Connection failed. %s(%d)", strerror(errno), errno); @@ -274,7 +284,7 @@ syslog(LOG_INFO, "%s connected", netdev); - run_devup(netdev, dst); + run_devup(netdev, dst, sk, -1); if (persist) w4_hup(sk);