Hi,
We have an RT 3.0.2 installation here, and we ran into a
peculiar problem: the RT::LoadConfig function simply doesn’t work. It’s
not that it misbehaves in some meaningful way – AFAICT, it simply
silently doesn’t run, when it’s supposed to.
We noticed it first when we enabled ParseNewMessageForTicketCcs
option – RT was refusing to acknowledge CCs in the initiating message.
I spent a few hours tracking it dowd, and discovered that there is a
section in RT::Interface::Gateway function which is conditional
upon $RT::ParseNewMessageForTicketCcs being set… except that the said
value isn’t set, even though it’s assigned the value of 1 in the
RT_SiteConfig.pm file.
So I stuck in some debugging code into RT::LoadConfig and
RT::Interface::Gateway functions, and bizarre things came into
the light – the code in the LoadConfig simply never got executed!
here is the relevant excerpt from the Gateway function:
BEGIN {
use RT;
RT::LoadConfig(*STDERR);
} # just in case
RT::LoadConfig(*STDERR);
print STDERR “— Email.pm: “.join(”-”, (caller(0))[0…3], $RT::ParseNewMessageForTicketCcs).“\n”;
if (1 || $RT::ParseNewMessageForTicketCcs) {
(the last line is our temporary workaround, made in
conjunction with manually removing the RT e-mail addresses from the
@Cc);
And here is the relevant modification of RT::LoadConfig function:
sub LoadConfig {
my $fh = shift || *STDERR;
print $fh “— RT.pm : “.join(”::”, (caller(1))[0…3]).“\n”;
Now when I restart Apache and submit a mail message, the
following appears in Apache’s error log (the last line is the relevant
datum):
[Tue Jun 10 16:21:25 2003] [notice] SIGHUP received. Attempting to restart
[Tue Jun 10 16:21:25 2003] [notice] Apache/1.3.27 (Unix) mod_perl/1.27 configured – resuming normal operations
[Tue Jun 10 16:21:25 2003] [notice] Accept mutex: sysvsem (Default: sysvsem)
— Email.pm: HTML::Mason::Commands-/nfs/saga/rt/rt3.0.2/share/html/REST/1.0/NoAuth/mail-gateway-33-RT::Interface::Gateway-
As you can see, the STDERR output from RT::LoadConfig never
appears; expectedly, ParseNewMessageForTicketCcs never gets set. What’s
more, if I further modify LoadConfig to return some distinctive string
and check its return value in Gateway, the return value is still 1
rather than the string I set!
it's truly bizarre. As far as I can tell, LoadConfig simply
doesn’t run – and produces no error message (neither in rt.log nor in
apache’s error log). I also tried wrapping the RT::LoadConfig call in
eval, with no result.
Even if the permissions on RT_SiteConfig.pm were wrong, the
debug text should still have been dumped! but nothing happens.
Amazingly, quietly, simply nothing happens.
Note that when I try the supposedly equivalent action on command
line, everything behaves expectedly:
[root@saga rt]# perl -Ipwd
/lib -w -e ‘use RT; print RT::LoadConfig(*STDOUT), “\n”;’ 2>/dev/null
— RT.pm :
1
I thought the code under Mason may be getting some other
version of RT.pm, but no – %INC indicates that I am modifying the
correct file.
We are currently working around this by manually forcing the few
conditionals depending on the variables we set in the config file; but I
would really like to be able to figure out what the fsck is wrong. Does
anyone have any ideas?
Thanks,
| Victor Danilchenko ±------------------------------------------+
| danilche@cs.umass.edu | With a GUI, what you see is what you get! |
| CSCF | 5-4231 | With a GUI, what you see is ALL you get! |