fix p2p connection race condition

pull/291/head
ffdfgdfg 2019-12-04 13:04:25 +08:00
parent fd71e0821f
commit 5da5bf1628
1 changed files with 10 additions and 0 deletions

View File

@ -1,8 +1,10 @@
package client
import (
"errors"
"net"
"net/http"
"runtime"
"sync"
"time"
@ -31,6 +33,14 @@ type p2pBridge struct {
}
func (p2pBridge *p2pBridge) SendLinkInfo(clientId int, link *conn.Link, t *file.Tunnel) (target net.Conn, err error) {
for i := 0; muxSession == nil; i++ {
if i >= 20 {
err = errors.New("p2pBridge:too many times to get muxSession")
logs.Error(err)
return
}
runtime.Gosched() // waiting for another goroutine establish the mux connection
}
nowConn, err := muxSession.NewConn()
if err != nil {
udpConn = nil