+14Jun24======================================================================
+1. Add new flag $Spot::no_node_in_dupe (default: 1) which disables including
+ the origin node for spot dupes. This should stop people posting the same
+ spot simultaniously on several nodes at once. Or at least just ignore all
+ the "duplicates".
+
+ The curious thing is that this (default) behaviour was the only deduping
+ done originally and there was some reason to include the origin node.
30Apr24======================================================================
1. "Fix" PC92 and PC19 node user creation and modification such that non-
connected nodes or nodes that DON'T have sysop altered privilege and
$user->build($parent->build($build));
++$changed;
}
+
if ($oldsort ne 'S') {
$user->sort('S');
- unless (DXChannel::get($user->call)) { # only do this if not connected
- my $oldpriv = $user->priv;
- my $oldlock = $user->lockout;
- $user->priv(1) unless defined $oldpriv && $oldpriv;
- $user->lockout(1) unless defined $oldlock;
- dbg(sprintf "PCPROT: PC92 K rec, node $call updated sort: $oldsort->S priv: '$oldpriv'->%d lockout: '$oldlock'->%s", $user->priv || 0, $user->lockout || 0);
- ++$changed;
- }
+ dbg(sprintf "PCPROT: PC92 K rec, node $call updated sort: $oldsort->S");
+ ++$changed;
+ }
+
+ unless (DXChannel::get($user->call)) { # only do this if not connected
+ my $oldpriv = $user->priv;
+ my $oldlock = $user->lockout;
+ my $lastchanged = $changed;
+ $user->priv(1), ++$changed unless defined $oldpriv && $oldpriv;
+ $user->lockout(1), ++$changed unless defined $oldlock;
+ dbg(sprintf "PCPROT: PC92 K rec, node $call updated priv: '$oldpriv'->%d lockout: '$oldlock'->%s", $user->priv || 0, $user->lockout || 0) if $lastchanged != $changed;
}
unless ($user->K) {
dbg(sprintf "PCPROT: PC92 K rec, node $call updated - marked as sending PC92 K records priv: %d lockout: %d ", $user->priv || 0, $user->lockout || 0);
our $qrggranularity = 1000; # normalise the qrg to this number of hz (default: 100khz), so tough luck if you have a fumble fingers moment
our $timegranularity = 600; # ditto to the nearest 100 seconds
our $oldstyle = 0; # revert to traditional dupe key format
-
+our $no_node_in_dupe = 1; # remove the node field from dupe considerations.
if ($readback) {
$readback = `which tac`;
$l = length $text;
$dtext .= qq{->final:'$text'($l)} if isdbg('spottext');
-
- my $ldupkey = $oldstyle ? "X|$call|$by|$node|$freq|$d|$text" : "X|$call|$by|$node|$qrg|$nd|$text";
my $t = 0;
+ my $ldupkey;
+
+ # new feature: don't include the origin node in Spot dupes
+ # default = true
+ $node = '' if $no_node_in_dupe;
+ $ldupkey = $oldstyle ? "X|$call|$by|$node|$freq|$d|$text" : "X|$call|$by|$node|$qrg|$nd|$text";
+
$t = DXDupe::find($ldupkey);
- dbg("Spot::dup ldupkey $ldupkey t '$t'") if isdbg('spotdup');
+ dbg("Spot::dup ldupkey $ldupkey t '$t'" . ($t?' DUPE':' NEW')) if isdbg('spotdup');
$dtext .= ' DUPE' if $t;
dbg("text transforms: $dtext") if length $text && isdbg('spottext');
return 1 if $t > 0;
DXDupe::add($ldupkey, $main::systime+$dupage) unless $just_find;
-
+
$otext = substr($otext, 0, $duplth) if length $otext > $duplth;
$otext =~ s/\s+$//;
if (length $otext && $otext ne $text) {
$ldupkey = $oldstyle ? "X|$freq|$call|$by|$otext" : "X|$qrg|$call|$by|$otext";
$t = DXDupe::find($ldupkey);
- dbg("Spot::dup (OTEXT) ldupkey $ldupkey t '$t'") if isdbg('spotdup');
+ dbg("Spot::dup (OTEXT) ldupkey $ldupkey t '$t'" . ($t?' DUPE':' NEW')) if isdbg('spotdup');
if (isdbg('spottext')) {
$dtext .= sprintf q{ DUBIOUS '%s'}, join '', @dubious if @dubious;
$dtext .= ' DUPE (OTEXT)' if $t;