mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-01-14 14:47:01 +08:00
Compare commits
4 Commits
v25.8.29
...
buffer-tro
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea508727de | ||
|
|
fbb0ecfb83 | ||
|
|
a31842feaa | ||
|
|
79325ead2e |
@@ -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])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
13
main/run.go
13
main/run.go
@@ -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}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user