X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXMsg.pm;h=c87fd2e4ec5b316433e9749f28aa525a0098cb8d;hb=b91254375e95e7931312c4177ee390866f82c648;hp=f136b16e7b23750192b817f27055caf0592e8fef;hpb=77fd72a34c14013dcb9430408e83cb30581f7cc2;p=spider.git diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index f136b16e..c87fd2e4 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -284,7 +284,7 @@ sub process $ref->swop_it($self->call); # look for 'bad' to addresses - if ($ref->dump_it) { + if ($ref->dump_it($self->call)) { $ref->stop_msg($self->call); dbg("'Bad' message $ref->{to}") if isdbg('msg'); Log('msg', "'Bad' message $ref->{to}"); @@ -686,7 +686,15 @@ sub start_msg $busy{$self->{tonode}} = $self; $work{$self->{tonode}} = $self; $self->{lastt} = $main::systime; - $dxchan->send(DXProt::pc28($self->{tonode}, $self->{fromnode}, $self->{to}, $self->{from}, $self->{t}, $self->{private}, $self->{subject}, $self->{origin}, $self->{rrreq})); + my ($fromnode, $origin); + if ($dxchan->is_arcluster) { + $fromnode = $self->{origin}; + $origin = $self->{fromnode}; + } else { + $fromnode = $self->{fromnode}; + $origin = $self->{origin}; + } + $dxchan->send(DXProt::pc28($self->{tonode}, $fromnode, $self->{to}, $self->{from}, $self->{t}, $self->{private}, $self->{subject}, $origin, $self->{rrreq})); } # get the ref of a busy node @@ -777,7 +785,7 @@ sub init } # delete any messages to 'badmsg.pl' places - if ($ref->dump_it) { + if ($ref->dump_it('')) { dbg("'Bad' TO address $ref->{to}") if isdbg('msg'); Log('msg', "'Bad' TO address $ref->{to}"); $ref->del_msg; @@ -992,6 +1000,7 @@ sub forward_it sub dump_it { my $ref = shift; + my $call = shift; my $i; for ($i = 0; $i < @badmsg; $i += 3) { @@ -1007,6 +1016,7 @@ sub dump_it $tested = $ref->{from} if $field eq 'F'; $tested = $ref->{origin} if $field eq 'O'; $tested = $ref->{subject} if $field eq 'S'; + $tested = $call if $field eq 'I'; if (!$pattern || $tested =~ m{$pattern}i) { return 1;