This is about my recent patch to postfix (already in our CVS). I think it should stay (doesn't break anythig), but maybe someone has some objections...
----- Forwarded message from Wietse Venema <[EMAIL PROTECTED]> ----- Subject: Re: [bug&patch] master failing on setsid() when already started as a session leader In-Reply-To: <[EMAIL PROTECTED]> "from Jacek Konieczny at Jun 1, 2005 03:22:01 pm" To: Jacek Konieczny <[EMAIL PROTECTED]> Date: Wed, 1 Jun 2005 11:17:10 -0400 (EDT) Cc: Wietse Venema <[EMAIL PROTECTED]> X-Time-Zone: USA EST, 6 hours behind central European time X-Mailer: ELM [version 2.4ME+ PL82 (25)] From: [EMAIL PROTECTED] (Wietse Venema) X-Virus-Scanned: by amavisd-new at bnet.pl X-Bogosity: No, tests=bogofilter, spamicity=0.005875, version=0.16.1 Sorry, this is not a bug. You are starting the master daemon in an unsupported manner. Wietse Jacek Konieczny: > > Hello, > > I wanted to post this bug report with a patch to [EMAIL PROTECTED], the only > address > for bug reports I have found in the documentation (DEBUG_README), and it > bounced because I am not subscribed to the list. > > Could you, please, forward it to a right (for a bug-report/patch) address? > > Greets, > Jacek > > ----------- > > I wanted to use postfix (2.2.3) with freedt (daemontools clone) > supervision. It requires the service to start in foreground, but > "master" daemon started this way was failing with error: > > Jun 1 09:16:54 serwis2 postfix/master[17168]: fatal: unable to set session > and process group ID: Operation not permitted > > Here is the piece of original code that does that: > > /* > * Run in a separate process group, so that "postfix stop" can terminate > * all MTA processes cleanly. Give up if we can't separate from our > * parent process. We're not supposed to blow away the parent. > */ > if (debug_me == 0 && setsid() == -1) > msg_fatal("unable to set session and process group ID: %m"); > > This may be reasonable not to allow master continue in a "foreign" > process group, but setsid() also fails when the calling process is > already a process group leader. > > Here is the patch which fixes this problem for me: > > --- postfix-2.2.3.orig/src/master/master.c 2005-02-15 01:36:58.000000000 > +0100 > +++ postfix-2.2.3/src/master/master.c 2005-06-01 09:55:35.000000000 +0200 > @@ -289,8 +289,8 @@ > * all MTA processes cleanly. Give up if we can't separate from our > * parent process. We're not supposed to blow away the parent. > */ > - if (debug_me == 0 && setsid() == -1) > - msg_fatal("unable to set session and process group ID: %m"); > + if (debug_me == 0 && setsid() == -1 && getsid(0) != getpid()) > + msg_fatal("unable to set session and process group ID: %m (pid=%d, > sid=%d)", (int)getpid(), (int)getsid(0)); > > /* > * Make some room for plumbing with file descriptors. XXX This breaks > > > Greets, > Jacek > ----- End forwarded message ----- _______________________________________________ pld-devel-en mailing list pld-devel-en@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-devel-en