X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXMsg.pm;h=04239f16b6777581ade86c2cb0f036f087d1f42b;hb=21ee7b1845f8fc5ab10c6a33a058cfbd11d7a705;hp=4c9d2e59f52752b75817394055224e7482c28eec;hpb=bbcb636f1bc71eb1426685ef64382ea42d27ecfb;p=spider.git diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index 4c9d2e59..04239f16 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -282,7 +282,7 @@ sub process # does an identical message already exist? my $m; for $m (@msg) { - if ($ref->{subject} eq $m->{subject} && $ref->{t} == $m->{t} && $ref->{from} eq $m->{from} && $ref->{to} eq $m->{to}) { + if (substr($ref->{subject},0,28) eq substr($m->{subject},0,28) && $ref->{t} == $m->{t} && $ref->{from} eq $m->{from} && $ref->{to} eq $m->{to}) { $ref->stop_msg($fromnode); my $msgno = $m->{msgno}; dbg("duplicate message from $ref->{from} -> $ref->{to} to msg: $msgno") if isdbg('msg'); @@ -487,7 +487,7 @@ sub del_msg my $call = ''; $call = ' by ' . $dxchan->call if $dxchan; - Log("Msgno $self->{msgno} expunged$call"); + Log('msg', "Msgno $self->{msgno} expunged$call"); # remove the file unlink filename($self->{msgno}); @@ -1218,7 +1218,6 @@ sub import_msgs my @out = import_one($main::me, \@msg, $splitit); Log('msg', @out); } - queue_msg(0); } # import one message as a list in bbs (as extended) mode @@ -1238,7 +1237,7 @@ sub import_one # first line; my $line = shift @$ref; - my @f = split /\b/, $line; + my @f = split /([\s\@\$])/, $line; @f = map {s/\s+//g; length $_ ? $_ : ()} @f; unless (@f && $f[0] =~ /^(:?S|SP|SB|SEND)$/ ) { @@ -1326,7 +1325,18 @@ sub import_one } else { push @chunk, $ref; } - + + # does an identical message already exist? + my $m; + for $m (@msg) { + if (substr($subject,0,28) eq substr($m->{subject},0,28) && $from eq $m->{from} && grep $m->{to} eq $_, @to) { + my $msgno = $m->{msgno}; + dbg("duplicate message from $from -> $m->{to} to msg: $msgno") if isdbg('msg'); + Log('msg', "duplicate message from $from -> $m->{to} to msg: $msgno"); + return; + } + } + # write all the messages away my $i; for ( $i = 0; $i < @chunk; $i++) {