diff --git a/app/proxyman/inbound/dynamic.go b/app/proxyman/inbound/dynamic.go index 0a98b888..9bf49717 100644 --- a/app/proxyman/inbound/dynamic.go +++ b/app/proxyman/inbound/dynamic.go @@ -23,7 +23,7 @@ type DynamicInboundHandler struct { receiverConfig *proxyman.ReceiverConfig streamSettings *internet.MemoryStreamConfig portMutex sync.Mutex - portsInUse map[net.Port]bool + portsInUse map[net.Port]struct{} workerMutex sync.RWMutex worker []worker lastRefresh time.Time @@ -39,7 +39,7 @@ func NewDynamicInboundHandler(ctx context.Context, tag string, receiverConfig *p tag: tag, proxyConfig: proxyConfig, receiverConfig: receiverConfig, - portsInUse: make(map[net.Port]bool), + portsInUse: make(map[net.Port]struct{}), mux: mux.NewServer(ctx), v: v, ctx: ctx, @@ -84,7 +84,7 @@ func (h *DynamicInboundHandler) allocatePort() net.Port { port := net.Port(allPorts[r]) _, used := h.portsInUse[port] if !used { - h.portsInUse[port] = true + h.portsInUse[port] = struct{}{} return port } } diff --git a/transport/internet/reality/reality.go b/transport/internet/reality/reality.go index a65507c6..0efcd96e 100644 --- a/transport/internet/reality/reality.go +++ b/transport/internet/reality/reality.go @@ -180,12 +180,12 @@ func UClient(c net.Conn, config *Config, ctx context.Context, dest net.Destinati prefix := []byte("https://" + uConn.ServerName) maps.Lock() if maps.maps == nil { - maps.maps = make(map[string]map[string]bool) + maps.maps = make(map[string]map[string]struct{}) } paths := maps.maps[uConn.ServerName] if paths == nil { - paths = make(map[string]bool) - paths[config.SpiderX] = true + paths = make(map[string]struct{}) + paths[config.SpiderX] = struct{}{} maps.maps[uConn.ServerName] = paths } firstURL := string(prefix) + getPathLocked(paths) @@ -232,7 +232,7 @@ func UClient(c net.Conn, config *Config, ctx context.Context, dest net.Destinati for _, m := range href.FindAllSubmatch(body, -1) { m[1] = bytes.TrimPrefix(m[1], prefix) if !bytes.Contains(m[1], dot) { - paths[string(m[1])] = true + paths[string(m[1])] = struct{}{} } } req.URL.Path = getPathLocked(paths) @@ -267,10 +267,10 @@ var ( var maps struct { sync.Mutex - maps map[string]map[string]bool + maps map[string]map[string]struct{} } -func getPathLocked(paths map[string]bool) string { +func getPathLocked(paths map[string]struct{}) string { stopAt := int(randBetween(0, int64(len(paths)-1))) i := 0 for s := range paths {