fix: xray内核使用自有连接时报空指针BUG

This commit is contained in:
wyx2685
2025-07-23 22:02:48 +09:00
parent eb51d3e13c
commit 39dfd8b6dd

View File

@@ -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
}