Let the config choose protocol 2 or 3, and fall back for one session only.

The default stays v2. A reflector that refuses that version and names the other gets one session of it, then the station announces the configured protocol again.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-22 16:28:42 +02:00
co-authored by Cursor
parent 3533b97d00
commit 2c621d4b7f
21 changed files with 361 additions and 82 deletions
+3 -2
View File
@@ -118,7 +118,7 @@ func TestSaveRewritesAndReconnects(t *testing.T) {
assertKeyOrder(t, body)
in.refl.accept(t)
declineTo2(t, in.refl)
expectVersion(t, in.refl, 2, 0)
challenge := make([]byte, 20)
for i := range challenge {
challenge[i] = byte(i + 1)
@@ -439,6 +439,7 @@ func TestEachConnectionFieldReconnects(t *testing.T) {
{name: "host", edit: func(f *station.ConfigForm, _ int) { f.Host = "localhost" }},
{name: "callsign", edit: func(f *station.ConfigForm, _ int) { f.Callsign = "DL1ABD" }},
{name: "authKey", edit: func(f *station.ConfigForm, _ int) { f.AuthKey = "other-key" }},
{name: "protocol", edit: func(f *station.ConfigForm, _ int) { f.Protocol = "v3" }},
{name: "certificateDir", edit: func(f *station.ConfigForm, _ int) { f.CertificateDir = "./radios" }},
}
for _, tt := range tests {
@@ -488,7 +489,7 @@ func TestEachConnectionFieldReconnects(t *testing.T) {
}
func fullConfig(host string, port int, callsign, authKey string, talkGroup int, logFile string) string {
return "{\"host\":\"" + host + "\",\"port\":" + strconv.Itoa(port) + ",\"callsign\":\"" + callsign + "\",\"authKey\":\"" + authKey + "\",\"talkGroup\":" + strconv.Itoa(talkGroup) + ",\"certificateDir\":\"./funknetz\",\"enableLogging\":false,\"logFile\":\"" + logFile + "\"}\n"
return "{\"host\":\"" + host + "\",\"port\":" + strconv.Itoa(port) + ",\"callsign\":\"" + callsign + "\",\"authKey\":\"" + authKey + "\",\"talkGroup\":" + strconv.Itoa(talkGroup) + ",\"protocol\":\"v2\",\"certificateDir\":\"./funknetz\",\"enableLogging\":false,\"logFile\":\"" + logFile + "\"}\n"
}
func connStillOpen(conn net.Conn) error {