diff --git a/app.go b/app.go index c96cb48..556ae75 100644 --- a/app.go +++ b/app.go @@ -9567,6 +9567,22 @@ func (a *App) LogUDPLoggedADIF(adifText string) (int64, error) { // 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. 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 ── // applyDXCCNumber stamps the contacted-station DXCC# from the