5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-12-23 04:05:39 +00:00

randomize the delay after tcp disconnects, to prevent synchronization issues

This commit is contained in:
Arceliar 2018-06-21 10:38:31 -05:00
parent f599a1a2c1
commit 19014a198e

View File

@ -17,6 +17,7 @@ package yggdrasil
import (
"errors"
"fmt"
"math/rand"
"net"
"sync"
"sync/atomic"
@ -112,6 +113,7 @@ func (iface *tcpInterface) call(saddr string, socksaddr *string) {
defer func() {
// Block new calls for a little while, to mitigate livelock scenarios
time.Sleep(tcp_timeout)
time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond)
iface.mutex.Lock()
delete(iface.calls, saddr)
iface.mutex.Unlock()