Skip to content

Commit d7a1cde

Browse files
committed
Inject dispatcher as interface
1 parent 50d8178 commit d7a1cde

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

proxy/vless/inbound/inbound.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ type Handler struct {
7676
validator vless.Validator
7777
decryption *encryption.ServerInstance
7878
outboundHandlerManager outbound.Manager
79-
defaultDispatcher *dispatcher.DefaultDispatcher
79+
defaultDispatcher routing.Dispatcher
8080
ctx context.Context
8181
fallbacks map[string]map[string]map[string]*Fallback // or nil
8282
// regexps map[string]*regexp.Regexp // or nil
@@ -90,7 +90,7 @@ func New(ctx context.Context, config *Config, dc dns.Client, validator vless.Val
9090
policyManager: v.GetFeature(policy.ManagerType()).(policy.Manager),
9191
validator: validator,
9292
outboundHandlerManager: v.GetFeature(outbound.ManagerType()).(outbound.Manager),
93-
defaultDispatcher: v.GetFeature(routing.DispatcherType()).(*dispatcher.DefaultDispatcher),
93+
defaultDispatcher: v.GetFeature(routing.DispatcherType()).(routing.Dispatcher),
9494
ctx: ctx,
9595
}
9696

@@ -261,7 +261,7 @@ func (*Handler) Network() []net.Network {
261261
}
262262

263263
// Process implements proxy.Inbound.Process().
264-
func (h *Handler) Process(ctx context.Context, network net.Network, connection stat.Connection, dispatcher routing.Dispatcher) error {
264+
func (h *Handler) Process(ctx context.Context, network net.Network, connection stat.Connection, dispatch routing.Dispatcher) error {
265265
iConn := connection
266266
if statConn, ok := iConn.(*stat.CounterConnection); ok {
267267
iConn = statConn.Connection
@@ -623,10 +623,14 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s
623623
if err != nil {
624624
return err
625625
}
626-
return r.NewMux(ctx, h.defaultDispatcher.WrapLink(ctx, &transport.Link{Reader: clientReader, Writer: clientWriter}))
626+
defaultDispatcher, ok := h.defaultDispatcher.(*dispatcher.DefaultDispatcher)
627+
if !ok {
628+
return errors.New("VLESS reverse must have a dispatcher that implemented routing.WrapLinkDispatcher")
629+
}
630+
return r.NewMux(ctx, defaultDispatcher.WrapLink(ctx, &transport.Link{Reader: clientReader, Writer: clientWriter}))
627631
}
628632

629-
if err := dispatcher.DispatchLink(ctx, request.Destination(), &transport.Link{
633+
if err := dispatch.DispatchLink(ctx, request.Destination(), &transport.Link{
630634
Reader: clientReader,
631635
Writer: clientWriter},
632636
); err != nil {

0 commit comments

Comments
 (0)