From f21d9765a64fc97cf269727b7762fd1d277fedec Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Tue, 29 Jun 2004 08:53:29 +0000 Subject: Restore signals for dev-up script --- pand/main.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pand/main.c b/pand/main.c index 9dfa18a1..4afc095f 100644 --- a/pand/main.c +++ b/pand/main.c @@ -89,9 +89,10 @@ enum { 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); @@ -101,6 +102,17 @@ static void run_devup(char *dev, char *dst) if (fork()) return; + if (sk >= 0) + close(sk); + + if (nsk >= 0) + 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; @@ -190,7 +202,7 @@ static int do_listen(void) 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); @@ -281,7 +293,7 @@ static int create_connection(char *dst, bdaddr_t *bdaddr) syslog(LOG_INFO, "%s connected", netdev); - run_devup(netdev, dst); + run_devup(netdev, dst, sk, -1); if (persist) { w4_hup(sk); -- cgit