diff --git a/core/xray/app/dispatcher/default.go b/core/xray/app/dispatcher/default.go index dfa17af..d4406ad 100644 --- a/core/xray/app/dispatcher/default.go +++ b/core/xray/app/dispatcher/default.go @@ -151,14 +151,9 @@ func (d *DefaultDispatcher) getLink(ctx context.Context, network net.Network) (* uplinkReader, uplinkWriter := pipe.New(opt...) downlinkReader, downlinkWriter := pipe.New(opt...) - managedWriter := &ManagedWriter{ - writer: uplinkWriter, - manager: d.Wm, - } - inboundLink := &transport.Link{ Reader: downlinkReader, - Writer: managedWriter, + Writer: uplinkWriter, } outboundLink := &transport.Link{ @@ -198,6 +193,13 @@ func (d *DefaultDispatcher) getLink(ctx context.Context, network net.Network) (* common.Interrupt(inboundLink.Reader) return nil, nil, nil, errors.New("Limited ", user.Email, " by conn or ip") } + managedWriter := &ManagedWriter{ + writer: uplinkWriter, + email: user.Email, + manager: d.Wm, + } + d.Wm.AddWriter(managedWriter) + inboundLink.Writer = managedWriter if w != nil { inboundLink.Writer = rate.NewRateLimitWriter(inboundLink.Writer, w) outboundLink.Writer = rate.NewRateLimitWriter(outboundLink.Writer, w) @@ -222,8 +224,6 @@ func (d *DefaultDispatcher) getLink(ctx context.Context, network net.Network) (* } } } - managedWriter.email = user.Email - d.Wm.AddWriter(managedWriter) return inboundLink, outboundLink, limit, nil }