A kernel does not deliver signals to ipacctd when its parent has masked signals before starting ipacctd. For example, this is a case for mpd and its ip-up scripts. Fix: ipacctd should unmask signals it expects to catch. Here is ports/net-mgmt/ipacctd/files/patch-sigunmask implementing this behavour. Eugene Grosbein--RK6i0rMSUVnLNUFTO4jZIGapDVpmQ7hAMkh3mFtfjhkwfzIQ Content-Type: text/plain; name="file.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="file.diff" --- src/ipacctd.c.orig Wed Mar 15 21:36:48 2006 +++ src/ipacctd.c Wed Mar 15 21:53:09 2006 @@ -138,6 +138,7 @@ fd_set allsocks; struct ip *ip; struct acct rec; + sigset_t set; bzero(&ds, size_ds); max_nrecords = MAX_NRECORDS; @@ -198,6 +199,12 @@ } /* signal handling */ + sigemptyset(&set); + sigaddset(&set, SIGTERM); + sigaddset(&set, SIGHUP); + sigaddset(&set, SIGUSR2); + sigprocmask(SIG_UNBLOCK, &set, NULL); + if (signal(SIGTERM, catch_signal) == SIG_ERR) err(1, "signal(SIGTERM)"); if (!flag_server) How-To-Repeat: Run ipacctd using scripts that mpd invokes when an interface comes up. ipacctd will run with some signals being masked out.
Responsible Changed From-To: freebsd-ports-bugs->skv Over to maintainer
State Changed From-To: open->closed Committed, thanks.