소스 검색

better port picker

Darien Raymond 8 년 전
부모
커밋
d6f8528075
1개의 변경된 파일7개의 추가작업 그리고 6개의 파일을 삭제
  1. 7 6
      testing/scenarios/common.go

+ 7 - 6
testing/scenarios/common.go

@@ -2,20 +2,21 @@ package scenarios
 
 import (
 	"net"
-	"sync/atomic"
 	"time"
 
 	"github.com/golang/protobuf/proto"
 	"v2ray.com/core"
+	"v2ray.com/core/common"
 	v2net "v2ray.com/core/common/net"
 )
 
-var (
-	port uint32 = 40000
-)
-
 func pickPort() v2net.Port {
-	return v2net.Port(atomic.AddUint32(&port, 1))
+	listener, err := net.Listen("tcp4", ":0")
+	common.Must(err)
+	defer listener.Close()
+
+	addr := listener.Addr().(*net.TCPAddr)
+	return v2net.Port(addr.Port)
 }
 
 func xor(b []byte) []byte {