On Fri, 31 Jan 2003, Roy Hooper wrote:
> It seems
> that when a domainlist is expanded that contains a perl subroutine call in
> the expansion string that returns undef, both a positive domainlist
> expansion and a negative domainlist expansion fail!
1. It is documented (11.4) that undef causes a forced expansion failure.
2. It is documented (10.2) that if the expansion of a named list is
forced to fail, Exim behaves as if the item it is testing is not in the
list.
> After much confusion during debugging, it occurs to me that I could have
> saved a lot of time if the following debugging facilities existed:
> - string expansion debugging that shows each individual expansion taking
> place and the results, say something like:
Noted.
> - perl call diagnostics (routine, parameters, and results), especially
> noting when an undef was returned.
Noted.
> - domainlist indicating when a failure occured causing the domainlist to
> fail
The expansion of the whole string failed before Exim tried to process
any it (see 10.1).
> I also encountered that a result value other than a scalar seems to behave
> just like undef -- so returning arrays (or hashes) doesn't result in
> expected behaviour. I expected array results to be interpreted in-context,
> either by concatenating values with newlines or spaces (alias data context)
> or as individual list items (domainlist context).
I haven't a clue how the interface works (I didn't write it). I'll add
to the documentation.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.