X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXMsg.pm;h=d5f56c330a59945e944ad9b0a608bea0d0d65c7e;hb=22970505cb6d1babd4ddb5af18c15c408f3cf7ac;hp=2abcb55f95b2967bf21f4d26d241c7f3c5530992;hpb=4caf0d3cacae4ecb4995e7cedd725b953516792e;p=spider.git diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index 2abcb55f..d5f56c33 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -44,7 +44,7 @@ $last_clean = 0; # last time we did a clean @forward = (); # msg forward table $timeout = 30*60; # forwarding timeout $waittime = 60*60; # time an aborted outgoing message waits before trying again -$queueinterval = 5*60; # run the queue every 5 minutes +$queueinterval = 2*60; # run the queue every 2 minutes $lastq = 0; @@ -186,6 +186,13 @@ sub process $busy{$f[2]} = $ref; # set interlock $self->send(DXProt::pc30($f[2], $f[1], $stream)); # send ack $ref->{lastt} = $main::systime; + + # look to see whether this is a non private message sent to a known callsign + my $uref = DXUser->get_current($ref->{to}); + if (iscallsign($ref->{to}) && !$ref->{private} && $uref && $uref->homenode) { + $ref->{private} = 1; + dbg('msg', "set bull to $ref->{to} to private"); + } last SWITCH; } @@ -260,7 +267,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}) { + if ($ref->{subject} eq $m->{subject} && $ref->{t} == $m->{t} && $ref->{from} eq $m->{from} && $ref->{to} eq $m->{to}) { $ref->stop_msg($self->call); my $msgno = $m->{msgno}; dbg('msg', "duplicate message to $msgno\n"); @@ -346,6 +353,7 @@ sub process $ref->{stream} = $stream; $ref->{count} = 0; # no of lines between PC31s $ref->{file} = 1; + $ref->{lastt} = $main::systime; $work{"$f[2]$stream"} = $ref; # store in work $self->send(DXProt::pc30($f[2], $f[1], $stream)); # send ack @@ -385,9 +393,9 @@ sub store my $lines = shift; # we only proceed if there are actually any lines in the file - if (!$lines || @{$lines} == 0) { - return; - } +# if (!$lines || @{$lines} == 0) { +# return; +# } if ($ref->{file}) { # a file dbg('msg', "To be stored in $ref->{to}\n"); @@ -580,7 +588,7 @@ sub queue_msg # ignore 'delayed' messages until their waiting time has expired if (exists $ref->{waitt}) { - next if $ref->{waitt} < $main::systime; + next if $ref->{waitt} > $main::systime; delete $ref->{waitt}; } @@ -648,6 +656,7 @@ sub start_msg $self->{fromnode} = $main::mycall; $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})); }