diff --git a/adapter/outbound/manager.go b/adapter/outbound/manager.go index b58f5277..0fdeb390 100644 --- a/adapter/outbound/manager.go +++ b/adapter/outbound/manager.go @@ -56,6 +56,14 @@ func (m *Manager) Start(stage adapter.StartStage) error { m.started = true m.stage = stage if stage == adapter.StartStateStart { + if m.defaultTag != "" && m.defaultOutbound == nil { + defaultEndpoint, loaded := m.endpoint.Get(m.defaultTag) + if !loaded { + m.access.Unlock() + return E.New("default outbound not found: ", m.defaultTag) + } + m.defaultOutbound = defaultEndpoint + } if m.defaultOutbound == nil { directOutbound, err := m.defaultOutboundFallback() if err != nil { @@ -66,14 +74,6 @@ func (m *Manager) Start(stage adapter.StartStage) error { m.outboundByTag[directOutbound.Tag()] = directOutbound m.defaultOutbound = directOutbound } - if m.defaultTag != "" && m.defaultOutbound == nil { - defaultEndpoint, loaded := m.endpoint.Get(m.defaultTag) - if !loaded { - m.access.Unlock() - return E.New("default outbound not found: ", m.defaultTag) - } - m.defaultOutbound = defaultEndpoint - } outbounds := m.outbounds m.access.Unlock() return m.startOutbounds(append(outbounds, common.Map(m.endpoint.Endpoints(), func(it adapter.Endpoint) adapter.Outbound { return it })...))