5
0
mirror of https://github.com/cwinfo/yggdrasil-go.git synced 2024-11-22 15:20:30 +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 ( import (
"errors" "errors"
"fmt" "fmt"
"math/rand"
"net" "net"
"sync" "sync"
"sync/atomic" "sync/atomic"
@ -112,6 +113,7 @@ func (iface *tcpInterface) call(saddr string, socksaddr *string) {
defer func() { defer func() {
// Block new calls for a little while, to mitigate livelock scenarios // Block new calls for a little while, to mitigate livelock scenarios
time.Sleep(tcp_timeout) time.Sleep(tcp_timeout)
time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond)
iface.mutex.Lock() iface.mutex.Lock()
delete(iface.calls, saddr) delete(iface.calls, saddr)
iface.mutex.Unlock() iface.mutex.Unlock()