Files
free-turn-proxy/internal/proxy/common/common_test.go
T
samosvalishe 40000fde5d feat(turn): фоллбэк по нескольким relay-адресам при allocate
VK отдаёт несколько relay-адресов, но стрим использовал ровно один
(streamID%n). Если этот IP душит DPI/RST — allocate падает без альтернативы.

Credentials несёт список адресов (primary-first по streamID), DialTURN
пробует кандидатов по очереди и берёт первый успешный allocate. Балансировка
relay-IP по стримам сохранена, остальные адреса — фоллбэк. HostOverride (-turn)
схлопывает список до одного адреса.
2026-06-08 00:09:17 +03:00

20 lines
431 B
Go

package common
import (
"context"
"net"
"testing"
)
func TestDialTURNNoCandidates(t *testing.T) {
t.Parallel()
getCreds := func(context.Context, int) (string, string, []string, error) {
return "u", "p", nil, nil
}
peer := &net.UDPAddr{IP: net.IPv4(1, 2, 3, 4), Port: 1}
_, err := DialTURN(context.Background(), "", "", false, peer, 0, getCreds)
if err == nil {
t.Fatal("expected error on empty candidate list")
}
}