X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXMsg.pm;h=eacbf6fe5984bc5cbfafae12fe9370de1b06ef70;hb=4cc67094baaf97c4d3d47aca73e2585c36a866eb;hp=7e54536e17e7c94b36939c30560b64a827fd0128;hpb=fa57f72c26032aae4c1a20358e829ba9afbf460c;p=spider.git diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index 7e54536e..eacbf6fe 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -65,7 +65,7 @@ sub alloc $self->{msgno} = shift; my $to = shift; # $to =~ s/-\d+$//o; - $self->{to} = uc $to; + $self->{to} = $to; my $from = shift; $from =~ s/-\d+$//o; $self->{from} = uc $from; @@ -103,7 +103,7 @@ sub process if ($pcno == 28) { # incoming message my $t = cltounix($f[5], $f[6]); my $stream = next_transno($f[2]); - my $ref = DXMsg->alloc($stream, $f[3], $f[4], $t, $f[7], $f[8], $f[13], '0', $f[11]); + my $ref = DXMsg->alloc($stream, uc $f[3], $f[4], $t, $f[7], $f[8], $f[13], '0', $f[11]); # fill in various forwarding state variables $ref->{fromnode} = $f[2]; @@ -126,7 +126,7 @@ sub process $ref->{count}++; if ($ref->{count} >= $ref->{linesreq}) { $self->send(DXProt::pc31($f[2], $f[1], $f[3])); - dbg('msg', "stream $f[3]: $ref->{linereq} lines received\n"); + dbg('msg', "stream $f[3]: $ref->{count} lines received\n"); $ref->{count} = 0; } } @@ -171,13 +171,17 @@ sub process # remove it from the work in progress vector # stuff it on the msg queue if ($ref->{lines} && @{$ref->{lines}} > 0) { # ignore messages with 0 lines - $ref->{msgno} = next_transno("Msgno") if !$ref->{file}; - push @{$ref->{gotit}}, $f[2]; # mark this up as being received - $ref->store($ref->{lines}); - add_dir($ref); - my $dxchan = DXChannel->get($ref->{to}); - $dxchan->send("New mail has arrived for you") if $dxchan; - Log('msg', "Message $ref->{msgno} from $ref->{from} received from $f[2] for $ref->{to}"); + if ($ref->{file}) { + $ref->store($ref->{lines}); + } else { + $ref->{msgno} = next_transno("Msgno"); + push @{$ref->{gotit}}, $f[2]; # mark this up as being received + $ref->store($ref->{lines}); + add_dir($ref); + my $dxchan = DXChannel->get($ref->{to}); + $dxchan->send("New mail has arrived for you") if $dxchan; + Log('msg', "Message $ref->{msgno} from $ref->{from} received from $f[2] for $ref->{to}"); + } } $ref->stop_msg($self); queue_msg(); @@ -210,9 +214,10 @@ sub process if ($pcno == 40) { # this is a file request $f[3] =~ s/\\/\//og; # change the slashes $f[3] =~ s/\.//og; # remove dots + $f[3] =~ s/^\///o; # remove the leading / $f[3] = lc $f[3]; # to lower case; dbg('msg', "incoming file $f[3]\n"); - last SWITCH if $f[3] =~ /^\/(perl|cmd|local_cmd|src|lib|include|sys|msg)\//; # prevent access to executables + last SWITCH if $f[3] =~ /^(perl|cmd|local|src|lib|include|sys|msg|connect)/; # prevent access to executables # create any directories my @part = split /\//, $f[3]; @@ -285,7 +290,6 @@ sub store } else { confess "can't open file $ref->{to} $!"; } - # push @{$ref->{gotit}}, $ref->{fromnode} if $ref->{fromnode}; } else { # a normal message # attempt to open the message file