fix: UDP-logged QSOs adopt the active profile's station callsign (Club Log upload blocked)

MSHV/WSJT-X often stamp a personal STATION_CALLSIGN (e.g. F4BPO) that differs
from the special-event/contest profile you're running in OpsLog (e.g. TM74TFR).
The QSO then failed the extsvc station-callsign guard and was never uploaded to
the (matching) Club Log logbook. Live UDP logging now stamps the active profile's
callsign when the base call genuinely differs (portable variants left alone).
This commit is contained in:
2026-07-20 19:32:06 +02:00
parent 22352c5748
commit f0afdcc498
+16
View File
@@ -9567,6 +9567,22 @@ func (a *App) LogUDPLoggedADIF(adifText string) (int64, error) {
// MY_RIG / MY_ANTENNA) from the active profile. Without this a UDP / // MY_RIG / MY_ANTENNA) from the active profile. Without this a UDP /
// WSJT-X auto-logged QSO carried none of the operator's own data. // WSJT-X auto-logged QSO carried none of the operator's own data.
a.applyStationDefaults(&q, true) a.applyStationDefaults(&q, true)
// Live UDP logging belongs to the STATION you're operating in OpsLog right now:
// adopt the active profile's callsign even when the sender (MSHV/WSJT-X, often
// configured with a personal call) stamped a different STATION_CALLSIGN. Without
// this, a special-event/contest QSO (profile TM74TFR) kept MSHV's F4BPO and was
// then BLOCKED from uploading to the TM74TFR Club Log logbook by the mismatch
// guard. Portable variants of the same call are already fine, so only override
// when the base call genuinely differs.
if a.profiles != nil {
if p, err := a.profiles.Active(a.ctx); err == nil {
pc := strings.ToUpper(strings.TrimSpace(p.Callsign))
if pc != "" && !extsvc.SameBaseCall(q.StationCallsign, pc) {
applog.Printf("udp log: station callsign %q → active profile %q", q.StationCallsign, pc)
q.StationCallsign = pc
}
}
}
// ── DXCC# + QSL defaults ── // ── DXCC# + QSL defaults ──
// applyDXCCNumber stamps the contacted-station DXCC# from the // applyDXCCNumber stamps the contacted-station DXCC# from the