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:
@@ -125,7 +125,7 @@ func TestUDPLimitRunsBeforeAnyDatagram(t *testing.T) {
|
||||
_ = st.Run(ctx)
|
||||
}()
|
||||
refl.accept(t)
|
||||
declineTo2(t, refl)
|
||||
expectVersion(t, refl, 2, 0)
|
||||
for step := 0; step < 6; step++ {
|
||||
clock.BlockUntilWaiting(t)
|
||||
clock.Advance(10 * time.Second)
|
||||
@@ -144,8 +144,8 @@ func TestUDPLimitRunsBeforeAnyDatagram(t *testing.T) {
|
||||
clock.Advance(2 * time.Second)
|
||||
refl.accept(t)
|
||||
typ, body := refl.readFrame(t)
|
||||
if typ != 5 || !versionIs(body, 3, 0) {
|
||||
t.Fatalf("retry type %d body %v, want 3.0", typ, body)
|
||||
if typ != 5 || !versionIs(body, 2, 0) {
|
||||
t.Fatalf("retry type %d body %v, want 2.0", typ, body)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ func TestOversizedFrameBeforeAuthRetries(t *testing.T) {
|
||||
_ = st.Run(ctx)
|
||||
}()
|
||||
refl.accept(t)
|
||||
declineTo2(t, refl)
|
||||
expectVersion(t, refl, 2, 0)
|
||||
payload := make([]byte, 65)
|
||||
var hdr [4]byte
|
||||
binary.BigEndian.PutUint32(hdr[:], 65)
|
||||
@@ -178,8 +178,8 @@ func TestOversizedFrameBeforeAuthRetries(t *testing.T) {
|
||||
clock.Advance(2 * time.Second)
|
||||
refl.accept(t)
|
||||
typ, body := refl.readFrame(t)
|
||||
if typ != 5 || !versionIs(body, 3, 0) {
|
||||
t.Fatalf("retry type %d body %v, want 3.0", typ, body)
|
||||
if typ != 5 || !versionIs(body, 2, 0) {
|
||||
t.Fatalf("retry type %d body %v, want 2.0", typ, body)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ func TestApplicationMessageBeforeLoginRetries(t *testing.T) {
|
||||
_ = st.Run(ctx)
|
||||
}()
|
||||
refl.accept(t)
|
||||
declineTo2(t, refl)
|
||||
expectVersion(t, refl, 2, 0)
|
||||
refl.writeFrame(t, 100, serverInfo(1, nil, []string{"OPUS"}))
|
||||
got, err := st.Wait(t.Context(), func(s station.State) bool { return s.Detail == "Protocol error" })
|
||||
if err != nil {
|
||||
@@ -211,8 +211,8 @@ func TestApplicationMessageBeforeLoginRetries(t *testing.T) {
|
||||
clock.Advance(2 * time.Second)
|
||||
refl.accept(t)
|
||||
typ, body := refl.readFrame(t)
|
||||
if typ != 5 || !versionIs(body, 3, 0) {
|
||||
t.Fatalf("retry type %d body %v", typ, body)
|
||||
if typ != 5 || !versionIs(body, 2, 0) {
|
||||
t.Fatalf("retry type %d body %v, want 2.0", typ, body)
|
||||
}
|
||||
if st.State().Detail != "Protocol error" {
|
||||
t.Fatalf("Detail = %q, want the reason kept", st.State().Detail)
|
||||
|
||||
Reference in New Issue
Block a user