diff --git a/shell/point/point.go b/shell/point/point.go index dbc3dae37..888f70dc2 100644 --- a/shell/point/point.go +++ b/shell/point/point.go @@ -157,18 +157,19 @@ func (this *Point) DispatchToOutbound(context app.Context, packet v2net.Packet) direct := ray.NewRay() dest := packet.Destination() + dispatcher := this.och + if this.router != nil { tag, err := this.router.TakeDetour(dest) if err == nil { handler, found := this.odh[tag] if found { - go handler.Dispatch(packet, direct) - return direct + dispatcher = handler } } } - go this.och.Dispatch(packet, direct) + go this.FilterPacketAndDispatch(packet, direct, dispatcher) return direct }