From 00f314724244dadfccd3de9c587bc95fecf634a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=8E=E6=89=87=E6=BB=91=E7=BF=94=E7=BF=BC?= Date: Sun, 3 Aug 2025 19:02:08 +0800 Subject: [PATCH] app/proxyman/inbound/inbound.go: Fix ListHandlers() (#4976) Fixes https://github.com/XTLS/Xray-core/issues/4956 --- app/proxyman/inbound/inbound.go | 12 ++++++------ app/proxyman/outbound/outbound.go | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/proxyman/inbound/inbound.go b/app/proxyman/inbound/inbound.go index 5d64c5b2..8e484965 100644 --- a/app/proxyman/inbound/inbound.go +++ b/app/proxyman/inbound/inbound.go @@ -17,7 +17,7 @@ import ( // Manager manages all inbound handlers. type Manager struct { access sync.RWMutex - untaggedHandler []inbound.Handler + untaggedHandlers []inbound.Handler taggedHandlers map[string]inbound.Handler running bool } @@ -47,7 +47,7 @@ func (m *Manager) AddHandler(ctx context.Context, handler inbound.Handler) error } m.taggedHandlers[tag] = handler } else { - m.untaggedHandler = append(m.untaggedHandler, handler) + m.untaggedHandlers = append(m.untaggedHandlers, handler) } if m.running { @@ -94,8 +94,8 @@ func (m *Manager) ListHandlers(ctx context.Context) []inbound.Handler { m.access.RLock() defer m.access.RUnlock() - var response []inbound.Handler - copy(m.untaggedHandler, response) + response := make([]inbound.Handler, len(m.untaggedHandlers)) + copy(response, m.untaggedHandlers) for _, v := range m.taggedHandlers { response = append(response, v) @@ -117,7 +117,7 @@ func (m *Manager) Start() error { } } - for _, handler := range m.untaggedHandler { + for _, handler := range m.untaggedHandlers { if err := handler.Start(); err != nil { return err } @@ -138,7 +138,7 @@ func (m *Manager) Close() error { errs = append(errs, err) } } - for _, handler := range m.untaggedHandler { + for _, handler := range m.untaggedHandlers { if err := handler.Close(); err != nil { errs = append(errs, err) } diff --git a/app/proxyman/outbound/outbound.go b/app/proxyman/outbound/outbound.go index ed47b778..244fcffe 100644 --- a/app/proxyman/outbound/outbound.go +++ b/app/proxyman/outbound/outbound.go @@ -150,8 +150,8 @@ func (m *Manager) ListHandlers(ctx context.Context) []outbound.Handler { m.access.RLock() defer m.access.RUnlock() - var response []outbound.Handler - copy(m.untaggedHandlers, response) + response := make([]outbound.Handler, len(m.untaggedHandlers)) + copy(response, m.untaggedHandlers) for _, v := range m.taggedHandler { response = append(response, v)