Compare commits

...

4 Commits

Author SHA1 Message Date
patterniha
ea508727de add buffer 2025-08-31 01:37:12 +03:30
RPRX
fbb0ecfb83 Chore: Fix tests
https://github.com/XTLS/Xray-core/pull/5067#issuecomment-3239405569
2025-08-30 17:35:21 +00:00
RPRX
a31842feaa Commands/run: Try all suffixes for default config 2025-08-30 14:17:08 +00:00
风扇滑翔翼
79325ead2e common/buf/buffer.go: Replace copy zero with clear() (#5071)
Co-authored-by: скриде с Тигром (0iq) <42325154+SkrideOne@users.noreply.github.com>
2025-08-30 13:13:40 +00:00
10 changed files with 42 additions and 40 deletions

View File

@@ -15,8 +15,6 @@ const (
var ErrBufferFull = errors.New("buffer is full")
var zero = [Size * 10]byte{0}
var pool = bytespool.GetPool(Size)
// ownership represents the data owner of the buffer.
@@ -146,7 +144,7 @@ func (b *Buffer) Bytes() []byte {
}
// Extend increases the buffer size by n bytes, and returns the extended part.
// It panics if result size is larger than buf.Size.
// It panics if result size is larger than size of this buffer.
func (b *Buffer) Extend(n int32) []byte {
end := b.end + n
if end > int32(len(b.v)) {
@@ -154,7 +152,7 @@ func (b *Buffer) Extend(n int32) []byte {
}
ext := b.v[b.end:end]
b.end = end
copy(ext, zero[:])
clear(ext)
return ext
}
@@ -217,7 +215,7 @@ func (b *Buffer) Resize(from, to int32) {
b.start += from
b.Check()
if b.end > oldEnd {
copy(b.v[oldEnd:b.end], zero[:])
clear(b.v[oldEnd:b.end])
}
}

View File

@@ -182,12 +182,15 @@ func getConfigFilePath(verbose bool) cmdarg.Arg {
}
if workingDir, err := os.Getwd(); err == nil {
configFile := filepath.Join(workingDir, "config.json")
if fileExists(configFile) {
if verbose {
log.Println("Using default config: ", configFile)
suffixes := []string{".json", ".jsonc", ".toml", ".yaml", ".yml"}
for _, suffix := range suffixes {
configFile := filepath.Join(workingDir, "config"+suffix)
if fileExists(configFile) {
if verbose {
log.Println("Using default config: ", configFile)
}
return cmdarg.Arg{configFile}
}
return cmdarg.Arg{configFile}
}
}

View File

@@ -253,6 +253,7 @@ func (s *Server) handleUDPPayload(ctx context.Context, sessionPolicy policy.Sess
defer cancel()
timer := signal.CancelAfterInactivity(ctx, cancel, sessionPolicy.Timeouts.ConnectionIdle)
defer timer.SetTimeout(0)
ctx = policy.ContextWithBufferPolicy(ctx, sessionPolicy.Buffer)
udpServer := udp.NewDispatcher(dispatcher, func(ctx context.Context, packet *udp_proto.Packet) {
udpPayload := packet.Payload
if udpPayload.UDP == nil {

View File

@@ -249,7 +249,7 @@ func TestZeroBuffer(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
if err := errg.Wait(); err != nil {

View File

@@ -182,7 +182,7 @@ func TestReverseProxy(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 32; i++ {
for range 32 {
errg.Go(testTCPConn(externalPort, 10240*1024, time.Second*40))
}
@@ -374,7 +374,7 @@ func TestReverseProxyLongRunning(t *testing.T) {
defer CloseAllServers(servers)
for i := 0; i < 4096; i++ {
for range 4096 {
if err := testTCPConn(externalPort, 1024, time.Second*20)(); err != nil {
t.Error(err)
}

View File

@@ -124,7 +124,7 @@ func testShadowsocks2022Tcp(t *testing.T, method string, password string) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
@@ -207,7 +207,7 @@ func testShadowsocks2022Udp(t *testing.T, method string, password string) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errGroup.Go(testUDPConn(udpClientPort, 1024, time.Second*5))
}

View File

@@ -96,7 +96,7 @@ func TestShadowsocksChaCha20Poly1305TCP(t *testing.T) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
if err := errGroup.Wait(); err != nil {
@@ -192,7 +192,7 @@ func TestShadowsocksAES256GCMTCP(t *testing.T) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
@@ -289,7 +289,7 @@ func TestShadowsocksAES128GCMUDP(t *testing.T) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errGroup.Go(testUDPConn(clientPort, 1024, time.Second*5))
}
if err := errGroup.Wait(); err != nil {
@@ -391,7 +391,7 @@ func TestShadowsocksAES128GCMUDPMux(t *testing.T) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errGroup.Go(testUDPConn(clientPort, 1024, time.Second*5))
}
if err := errGroup.Wait(); err != nil {
@@ -477,7 +477,7 @@ func TestShadowsocksNone(t *testing.T) {
defer CloseAllServers(servers)
var errGroup errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}

View File

@@ -240,7 +240,7 @@ func TestAutoIssuingCertificate(t *testing.T) {
common.Must(err)
defer CloseAllServers(servers)
for i := 0; i < 10; i++ {
for range 3 {
if err := testTCPConn(clientPort, 1024, time.Second*20)(); err != nil {
t.Error(err)
}
@@ -449,7 +449,7 @@ func TestTLSOverWebSocket(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
if err := errg.Wait(); err != nil {
@@ -565,7 +565,7 @@ func TestGRPC(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*10240, time.Second*40))
}
if err := errg.Wait(); err != nil {
@@ -681,7 +681,7 @@ func TestGRPCMultiMode(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*10240, time.Second*40))
}
if err := errg.Wait(); err != nil {

View File

@@ -117,7 +117,7 @@ func TestVless(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {
@@ -239,7 +239,7 @@ func TestVlessTls(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {
@@ -363,7 +363,7 @@ func TestVlessXtlsVision(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {
@@ -502,7 +502,7 @@ func TestVlessXtlsVisionReality(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 1; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {

View File

@@ -260,7 +260,7 @@ func TestVMessGCM(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*40))
}
@@ -366,7 +366,7 @@ func TestVMessGCMReadv(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*40))
}
if err := errg.Wait(); err != nil {
@@ -465,7 +465,7 @@ func TestVMessGCMUDP(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errg.Go(testUDPConn(clientPort, 1024, time.Second*5))
}
if err := errg.Wait(); err != nil {
@@ -564,7 +564,7 @@ func TestVMessChacha20(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
}
@@ -664,7 +664,7 @@ func TestVMessNone(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {
@@ -771,7 +771,7 @@ func TestVMessKCP(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024, time.Minute*2))
}
if err := errg.Wait(); err != nil {
@@ -915,7 +915,7 @@ func TestVMessKCPLarge(t *testing.T) {
common.Must(err)
var errg errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 513*1024, time.Minute*5))
}
if err := errg.Wait(); err != nil {
@@ -1026,7 +1026,7 @@ func TestVMessGCMMux(t *testing.T) {
for range "abcd" {
var errg errgroup.Group
for i := 0; i < 16; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240, time.Second*20))
}
if err := errg.Wait(); err != nil {
@@ -1152,7 +1152,7 @@ func TestVMessGCMMuxUDP(t *testing.T) {
for range "ab" {
var errg errgroup.Group
for i := 0; i < 2; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024, time.Second*10))
errg.Go(testUDPConn(clientUDPPort, 1024, time.Second*10))
}
@@ -1259,7 +1259,7 @@ func TestVMessZero(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
}
if err := errg.Wait(); err != nil {
@@ -1361,7 +1361,7 @@ func TestVMessGCMLengthAuth(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*40))
}
@@ -1465,7 +1465,7 @@ func TestVMessGCMLengthAuthPlusNoTerminationSignal(t *testing.T) {
defer CloseAllServers(servers)
var errg errgroup.Group
for i := 0; i < 10; i++ {
for range 3 {
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*40))
}