>> This morning my filter program (the exim child process) which uses
>> libspf2 to look up SPF records threw an error.  The error is actually
>> generated by libspf2, written to stderr, and appears in the exim main
>> log, e.g.:
> 
> As far as I can tell, this must be something that your local_scan function
> is doing, because it isn't something Exim normally does. (The return_fail
> mechanism used for the pipe transport isn't provided to local_scan
> functions.)

That was my thinking too, but the error only occurred when something
wrote to stderr, so I started looking at exim.  I've been reading the
code and found this (exim-4.62):

$ nl -ba src/child.c
[snip]
   379    (void)close(inpfd[pipe write]);
   380    force fd(inpfd[pipe read], 0);
   381
   382    (void)close(outpfd[pipe read]);
   383    force fd(outpfd[pipe write], 1);
   384
   385    (void)close(2);
   386    (void)dup2(1, 2);

stdout and stderr share file descriptor 1.  My code is looking for
results on stdout.  SPF library output to stderr appears on stdout and
that trips up my stuff.

Jack

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://www.exim.org/eximwiki/

Reply via email to