+ dbg("PCPROT: PC92 K v: $version ov: $oldversion b: $build ob: $oldbuild pk: " . ($parent->K || '0') . " uk: " . ($user->K || 0)) if isdbg('pc92k');
+
+ if (is_numeric($version) || is_numeric($build)) {
+ my $changed = 0;
+ if (($oldversion ne $version || $build ne $oldbuild)) {
+ dbg("PCPROT: PC92 K rec, node $call updated version: $version (was $oldversion) build: $build (was $oldbuild)");
+ $user->version($parent->version($version));
+ $user->build($parent->build($build));
+ ++$changed;
+ }
+
+ if ($oldsort ne 'S') {
+ $user->sort('S');
+ 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);
+ $user->K(1);
+ ++$changed;
+ }
+ $user->put if $changed;
+ $parent->K(1); # mark this as come in on a K
+ } else {
+ dbg("DXProt PC92 K rec, version call $call: invalid version: '$version' or build: '$version', ignored");
+ }
+ dbg("ROUTE: reset obscount on $call now " . $parent->obscount) if isdbg('obscount');