mirror of
https://github.com/rkonfj/peerguard.git
synced 2024-08-11 11:00:25 +08:00
disco: shuffle stun servers
This commit is contained in:
parent
3f7171e7a8
commit
545adb0348
@ -349,6 +349,7 @@ func (c *UDPConn) runPacketEventLoop() {
|
||||
|
||||
// stun response
|
||||
if stun.Is(buf[:n]) {
|
||||
slog.Log(context.Background(), -3, "RecvSTUNResponse", "from", peerAddr)
|
||||
b := make([]byte, n)
|
||||
copy(b, buf[:n])
|
||||
c.stunResponse <- b
|
||||
@ -458,6 +459,7 @@ func (c *UDPConn) RequestSTUN(peerID disco.PeerID, stunServers []string) {
|
||||
}
|
||||
txID := stun.NewTxID()
|
||||
c.stunSessionManager.Set(string(txID[:]), peerID)
|
||||
rand.Shuffle(len(stunServers), func(i, j int) { stunServers[i], stunServers[j] = stunServers[j], stunServers[i] })
|
||||
for _, stunServer := range stunServers {
|
||||
uaddr, err := net.ResolveUDPAddr("udp", stunServer)
|
||||
if err != nil {
|
||||
@ -469,6 +471,7 @@ func (c *UDPConn) RequestSTUN(peerID disco.PeerID, stunServers []string) {
|
||||
slog.Error("Request STUN server failed", "err", err.Error())
|
||||
continue
|
||||
}
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user