Repository navigation
XTLS Vision: never switches to direct copy when inner TLS records arrive back to back (IsCompleteRecord is per batch) #7164
Description
Integrity requirements
- I have read all the comments in the issue template and ensured that this issue meet the requirements.
- I confirm that I have read the documentation, understand the meaning of all the configuration items I wrote, and did not pile up seemingly useful options or default values.
- I provided the complete config and logs, rather than just providing the truncated parts based on my own judgment.
- I searched issues and did not find any similar issues.
- The problem can be successfully reproduced in the latest Release
The fourth box is unchecked on purpose: #6124 shows the same symptom for one download. It was closed together with #4878 by #6834, which fixed the close_notify leak but not the switch. Details below.
Description
Since #5179 (first released in v25.12.1), VisionWriter switches to direct copy only when a whole read batch is made of complete TLS application-data records:
Lines 362 to 369 in 701af60
| isComplete := IsCompleteRecord(mb) | |
| mb = ReshapeMultiBuffer(w.ctx, mb) | |
| longPadding := w.trafficState.IsTLS | |
| for i, b := range mb { | |
| if w.trafficState.IsTLS && b.Len() >= 6 && bytes.Equal(TlsApplicationDataStart, b.BytesTo(3)) && isComplete { | |
| if w.trafficState.EnableXtls { | |
| *switchToDirectCopy = true | |
| } |
IsCompleteRecord (proxy.go#L408-L460) looks at one batch at a time and keeps no state between batches. For TLS 1.3 nothing else ends the padding: the shortcut at L381 only applies to traffic that is not TLS 1.2+. Once a batch ends inside a record, the next batch starts inside a record and cannot pass. The switch then only happens if two reads in a row both end exactly on a record boundary.
With a sender that writes full-size records back to back, that doesn't happen:
- The first read after the handshake is a single 8 KiB buffer.
ReadVReaderstarts with onebuf.Sizebuffer and only adds more after a full read (readv_reader.go#L63-L70, #L124-L145). So when the handshake fits in 8 KiB, as it does here, the first 16 KiB record (16,406 bytes on the wire) is always cut. In the upload log below, the first batch is the client's ChangeCipherSpec + Finished (64 bytes) plus the first 8,128 bytes of the first record. - Later reads take up to 8 × 8 KiB. Whenever data waits in the socket, because the proxy or the link behind it is slower than the sender, every read is a full 64 KiB. Two full reads in a row can never both end on a record boundary, because 65,536 is not a multiple of 16,406. So the check can only pass next to a read that drains the socket, which needs the proxy to catch up with the sender.
The download batches come straight from freedom's reads of the target socket (freedom.go#L435, proxy.go#L790-L797). The upload batches are the client inbound's reads (outbound.go#L367).
So the connection stays in padding mode for the whole transfer. Each buffer is reshaped and padded, the inner TLS stream is encrypted a second time by the outer TLS, and neither direct copy nor, for downloads, splice ever starts. CommandPaddingDirect is only sent after the payload, when a short trailing record arrives alone (here the receiver's 1-byte reply or a close_notify).
Evidence (repro below; plain TCP on 127.0.0.1, official Xray-linux-64.zip):
- 1 GB upload at debug level: the client logs 232,453
XtlsPadding … 0lines. Its onlyXtlsPadding … 2is the 24-byte close_notify after the payload. In a 1 GB download, the server logs 232,494XtlsPadding … 0lines and noCopyRawConn splice. - The outcome depends on read timing, but here it is consistent. All 41 unpinned debug runs on v26.10.10 stayed in padding mode: 24 uploads and 17 downloads of 256 KiB to 1 GB. That includes 10 runs with Go's default dynamic record sizing, which sends small records first. Judging by their CPU cost, all 20 back-to-back Vision runs in the table below stayed in padding mode too, as did 6 of 6 debug runs on v26.3.27. With all four processes squeezed onto 3 CPUs, 1 run of 4 switched after the second record.
- When the sender first writes one 100-byte record between two 10 ms pauses (
preludebelow), that record is read alone and the switch happens on it. This worked in 10 of 10 uploads and 10 of 10 downloads:[Debug] [3798155656] proxy: XtlsPadding 122 1253 2 [Debug] [3798155656] proxy: CopyRawConn splice - A real client is affected too. curl 8.22.0 (OpenSSL 4.0.2) uploaded 20 MB with
PUTthrough the same setup to a Gonet/httpHTTPS server. Over HTTP/1.1, 2 of 3 uploads stayed in padding mode to the end; the third switched on its 153-byte request-header record, which happened to be read alone. Over HTTP/2, the switch came after about 0.07, 3.9 and 5.3 MB, each time when a small control-frame record happened to be read alone. - v25.10.15, from before XTLS Vision: Check TLS record isComplete #5179, switches on the first data batch of the same transfers (6 of 6), cutting the first record in two. That is the problem XTLS Vision: Check TLS record isComplete #5179 fixed (Vision 协议 偶发bug 导致TLS IN TLS 特征 #5169).
- main (0888beb) has not changed
proxy/proxy.go,proxy/vless/,proxy/freedom/orcommon/buf/since v26.10.10.
Cost: 1 GB per run, "loglevel": "warning", median of 5 runs. CPU is in seconds per GB for each xray process, shown as client + server.
| 1 GB | unpinned Gbit/s | unpinned CPU s/GB | pinned Gbit/s | pinned CPU s/GB |
|---|---|---|---|---|
| Upload, Vision, back-to-back records | 0.34 | 45.6 + 32.3 | 1.33 | 5.4 + 6.0 |
Upload, Vision, prelude (switches) |
2.11 | 4.3 + 4.4 | 4.64 | 1.3 + 1.2 |
| Upload, no flow (VLESS + TLS) | 1.13 | 5.5 + 10.1 | 2.26 | 1.5 + 3.5 |
| Download, Vision, back-to-back records | 0.36 | 26.6 + 42.4 | 1.33 | 5.5 + 5.8 |
Download, Vision, prelude (switches) |
1.84 | 2.8 + 4.1 | 3.81 | 1.1 + 1.4 |
| Download, no flow (VLESS + TLS) | 1.15 | 10.1 + 5.2 | 2.26 | 3.5 + 1.6 |
In padding mode, a transfer takes about 9–10× the CPU it takes after the switch, and 4.5–5× the CPU of VLESS + TLS without flow. Pinned, the ratios are about 4.5× and 2.2×.
Real traffic: this is probably what #6124 logged. An App Store download (iosapps.itunes.apple.com) stayed in XtlsPadding for 25 MB / 13 s, while 8 short connections to other Apple hosts on the same inbound switched within 0.2–0.4 s. Uploads are probably hit hardest. A TLS 1.3 client's first application data often shares a read with its ChangeCipherSpec + Finished, and that batch can never pass because it starts with a ChangeCipherSpec record. If the request body follows without a pause, no later batch passes either. I found this while measuring Vision's CPU cost for uploads on an OpenMPTCProuter router over MPTCP; the repro uses plain TCP, so MPTCP is not involved.
Question: could the writer track record boundaries across batches instead, that is, the bytes left in the current record? On the first batch that contains a record boundary followed by application data, it could pad and send the part up to the boundary with CommandPaddingDirect, then write the rest directly. That would keep what #5179 guarantees (the padded part ends on a record boundary) without needing a whole batch to be aligned. I may be missing a reason why the check has to be per batch.
Reproduction Method
- Download Xray-linux-64.zip v26.10.10 and check it against Xray-linux-64.zip.dgst. Save the configs below as
client.jsonandserver.json. They use a fresh UUID (xray uuid) and a fresh self-signed certificate (xray tls cert --domain=example.com), which the client pins withpinnedPeerCertSha256. The server's freedom outbound needsfinalRulesto allow 127.0.0.1, which v26.10.10 blocks by default behind a VLESS inbound. - Save the program below as
tlsblast.goand build it withgo build tlsblast.go(Go 1.21 or later, standard library only). It sends N bytes over TLS 1.3 in one direction as back-to-back 16 KiB records, and prints the throughput. - Run:
For a download, use
./xray run -c server.json & # VLESS + TLS + Vision on 127.0.0.1:8443, freedom out ./xray run -c client.json & # dokodemo-door 127.0.0.1:10000 -> 127.0.0.1:9000 through the server sleep 1 ./tlsblast server 127.0.0.1:9000 up 1000000000 & sleep 1 ./tlsblast client 127.0.0.1:10000 up 1000000000
downinstead ofupin both tlsblast commands. To get the switch, addpreludeat the end of both. Without Vision, remove"flow": "xtls-rprx-vision"from both configs.
For the numbers, I started fresh xray processes for every run. CPU is utime + stime of each xray process, read from /proc/<pid>/stat right before and after the transfer. "Pinned" puts each of the four processes on its own CPU with taskset -c, so Go uses GOMAXPROCS=1. The machine has 8 vCPUs of an AMD Ryzen 9 5900X (VirtualBox VM), Ubuntu 25.10, Linux 6.17.0-41-generic; only the ratios matter.
The client and server logs below are the complete debug logs (dnsLog on) of one 256 KiB upload (up 262144) with the configs below. With 1 GB, the same XtlsPadding … 0 and Xtls Unpadding … command 0 lines repeat about 230,000 times on each side.
tlsblast.go
// tlsblast: one TLS 1.3 connection that carries BYTES in one direction as
// back-to-back 16 KiB records (no small records at the start), then prints
// the throughput. up: the client sends; down: the server sends. With "prelude",
// the sender first writes one 100-byte record between two 10 ms pauses.
//
// tlsblast server 127.0.0.1:9000 up|down BYTES [prelude]
// tlsblast client 127.0.0.1:10000 up|down BYTES [prelude]
package main
import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
"crypto/tls"
"crypto/x509"
"fmt"
"io"
"math/big"
"net"
"os"
"strconv"
"time"
)
func check(err error) {
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
func main() {
role, addr, dir := os.Args[1], os.Args[2], os.Args[3]
total, err := strconv.ParseInt(os.Args[4], 10, 64)
check(err)
cfg := &tls.Config{MinVersion: tls.VersionTLS13, DynamicRecordSizingDisabled: true}
var c *tls.Conn
if role == "server" {
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
check(err)
tmpl := &x509.Certificate{SerialNumber: big.NewInt(1), NotAfter: time.Now().Add(time.Hour)}
der, err := x509.CreateCertificate(rand.Reader, tmpl, tmpl, &key.PublicKey, key)
check(err)
cfg.Certificates = []tls.Certificate{{Certificate: [][]byte{der}, PrivateKey: key}}
ln, err := net.Listen("tcp", addr)
check(err)
raw, err := ln.Accept()
check(err)
c = tls.Server(raw, cfg)
} else {
cfg.InsecureSkipVerify = true
raw, err := net.Dial("tcp", addr)
check(err)
c = tls.Client(raw, cfg)
}
check(c.Handshake())
start, buf, n := time.Now(), make([]byte, 16384), total
if (role == "client") == (dir == "up") { // this side sends
if len(os.Args) > 5 && os.Args[5] == "prelude" {
time.Sleep(10 * time.Millisecond)
_, err = c.Write(buf[:100])
n -= 100
time.Sleep(10 * time.Millisecond)
}
for ; n > 0 && err == nil; n -= 16384 {
_, err = c.Write(buf[:min(n, 16384)])
}
check(err)
_, err = io.ReadFull(c, buf[:1]) // the receiver's 1-byte ack
} else {
_, err = io.CopyN(io.Discard, c, n)
check(err)
_, err = c.Write([]byte{'K'})
}
check(err)
sec := time.Since(start).Seconds()
c.Close()
fmt.Printf("%s %s: %d bytes in %.2f s = %.2f Gbit/s\n", role, dir, total, sec, float64(total)*8/sec/1e9)
}Client config
Details
{
"log": {
"loglevel": "debug",
"dnsLog": true
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": 10000,
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1",
"port": 9000
}
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {
"address": "127.0.0.1",
"port": 8443,
"id": "f6e1cd24-9a78-46f4-b6b6-f95e09cfd1e7",
"flow": "xtls-rprx-vision",
"encryption": "none"
},
"streamSettings": {
"security": "tls",
"tlsSettings": {
"pinnedPeerCertSha256": "e3a8fe8b0ba4b847af03a09a20e30c4e1f4cdeaa7943ff8fdf6fa358a503eb65"
}
}
}
]
}
Server config
Details
{
"log": {
"loglevel": "debug",
"dnsLog": true
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": 8443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "f6e1cd24-9a78-46f4-b6b6-f95e09cfd1e7",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificate": [
"-----BEGIN CERTIFICATE-----",
"MIIBmTCCAT6gAwIBAgIRAM9Om6FtwfzWX8oi97lc5aswCgYIKoZIzj0EAwIwJjER",
"MA8GA1UEChMIWHJheSBJbmMxETAPBgNVBAMTCFhyYXkgSW5jMB4XDTI2MTAxNTA5",
"Mjg0MFoXDTI3MDExMzEwMjg0MFowJjERMA8GA1UEChMIWHJheSBJbmMxETAPBgNV",
"BAMTCFhyYXkgSW5jMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAJUkVi4rMfl9",
"KQt2xD01Iftwj3h1L3EgSQNiwwrDMWp2olzS+ZLNARnmP3cPgqfSR+y9nqJXC+qS",
"MaCrTVebTKNNMEswDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB",
"MAwGA1UdEwEB/wQCMAAwFgYDVR0RBA8wDYILZXhhbXBsZS5jb20wCgYIKoZIzj0E",
"AwIDSQAwRgIhAJVDQ35Iu1bpFQOoyvOcB6EuN3V29yLYOPKhTg0PwjJfAiEArMxT",
"UP/4Bv9BsqAdn9P92kspVShPBln1jxamGAPXS8M=",
"-----END CERTIFICATE-----"
],
"key": [
"-----BEGIN RSA PRIVATE KEY-----",
"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgP2n+zrvPp09NYkN+",
"BbihPbsEjyvvoifvRA6RZvETgCqhRANCAAQAlSRWLisx+X0pC3bEPTUh+3CPeHUv",
"cSBJA2LDCsMxanaiXNL5ks0BGeY/dw+Cp9JH7L2eolcL6pIxoKtNV5tM",
"-----END RSA PRIVATE KEY-----"
]
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {
"finalRules": [
{
"action": "allow",
"ip": [
"127.0.0.1"
]
}
]
}
}
]
}
Client log
Details
Xray 26.10.10 (Xray, Penetrates Everything.) 701af60 (go1.27.2 linux/amd64)
A unified platform for anti-censorship.
2026/10/15 11:55:19.414735 [Info] infra/conf/serial: Reading config: &{Name:client.json Format:json}
2026/10/15 11:55:19.416409 [Debug] app/log: Logger started
2026/10/15 11:55:19.417908 [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:10000
2026/10/15 11:55:19.417925 [Info] transport/internet/tcp: listening tcp on 127.0.0.1:10000
2026/10/15 11:55:19.417930 [Warning] core: Xray 26.10.10 started
2026/10/15 11:55:19.695936 [Debug] [2286240241] proxy/dokodemo: processing connection from: 127.0.0.1:51580
2026/10/15 11:55:19.695977 [Info] [2286240241] proxy/dokodemo: received request for 127.0.0.1:51580
2026/10/15 11:55:19.695986 [Info] [2286240241] app/dispatcher: default route for tcp:127.0.0.1:9000
2026/10/15 11:55:19.695990 [Info] [2286240241] transport/internet/tcp: dialing TCP to tcp:127.0.0.1:8443
2026/10/15 11:55:19.695994 [Debug] [2286240241] transport/internet: dialing to tcp:127.0.0.1:8443
2026/10/15 11:55:19.696564 from 127.0.0.1:51580 accepted tcp:127.0.0.1:9000
2026/10/15 11:55:19.702678 [Info] [2286240241] proxy/vless/outbound: tunneling request to tcp:127.0.0.1:9000 via 127.0.0.1:8443
2026/10/15 11:55:19.703013 [Debug] [2286240241] proxy: XtlsFilterTls found tls client hello! 1455
2026/10/15 11:55:19.703041 [Debug] [2286240241] proxy: XtlsPadding 1455 38 0
2026/10/15 11:55:19.705622 [Debug] [2286240241] proxy: Xtls Unpadding new block, content 1684 padding 250 command 0
2026/10/15 11:55:19.705646 [Debug] [2286240241] proxy: XtlsFilterTls found tls 1.3! 1163 TLS_AES_128_GCM_SHA256
2026/10/15 11:55:19.708019 [Debug] [2286240241] proxy: ReshapeMultiBuffer 64 8128
2026/10/15 11:55:19.708432 [Debug] [2286240241] proxy: XtlsPadding 64 1190 0
2026/10/15 11:55:19.708445 [Debug] [2286240241] proxy: XtlsPadding 8128 24 0
2026/10/15 11:55:19.708450 [Debug] [2286240241] proxy: ReshapeMultiBuffer 4096 4096 86 8106
2026/10/15 11:55:19.708454 [Debug] [2286240241] proxy: XtlsPadding 4096 231 0
2026/10/15 11:55:19.708457 [Debug] [2286240241] proxy: XtlsPadding 4096 107 0
2026/10/15 11:55:19.708461 [Debug] [2286240241] proxy: XtlsPadding 86 814 0
2026/10/15 11:55:19.708465 [Debug] [2286240241] proxy: XtlsPadding 8106 65 0
2026/10/15 11:55:19.709688 [Debug] [2286240241] proxy: ReshapeMultiBuffer 4096 4096 108 8084 4096 4096 130 8062
2026/10/15 11:55:19.709700 [Debug] [2286240241] proxy: XtlsPadding 4096 33 0
2026/10/15 11:55:19.709704 [Debug] [2286240241] proxy: XtlsPadding 4096 6 0
2026/10/15 11:55:19.709708 [Debug] [2286240241] proxy: XtlsPadding 108 826 0
2026/10/15 11:55:19.709711 [Debug] [2286240241] proxy: XtlsPadding 8084 18 0
2026/10/15 11:55:19.709715 [Debug] [2286240241] proxy: XtlsPadding 4096 208 0
2026/10/15 11:55:19.709718 [Debug] [2286240241] proxy: XtlsPadding 4096 212 0
2026/10/15 11:55:19.709722 [Debug] [2286240241] proxy: XtlsPadding 130 1128 0
2026/10/15 11:55:19.709725 [Debug] [2286240241] proxy: XtlsPadding 8062 109 0
2026/10/15 11:55:19.709738 [Debug] [2286240241] proxy: ReshapeMultiBuffer 4096 4096 152 8040 4096 4096 174 8018 4096 4096 196 7996 4096 4096 218
2026/10/15 11:55:19.709743 [Debug] [2286240241] proxy: XtlsPadding 4096 112 0
2026/10/15 11:55:19.709747 [Debug] [2286240241] proxy: XtlsPadding 4096 140 0
2026/10/15 11:55:19.709751 [Debug] [2286240241] proxy: XtlsPadding 152 904 0
2026/10/15 11:55:19.709754 [Debug] [2286240241] proxy: XtlsPadding 8040 131 0
2026/10/15 11:55:19.709758 [Debug] [2286240241] proxy: XtlsPadding 4096 245 0
2026/10/15 11:55:19.709762 [Debug] [2286240241] proxy: XtlsPadding 4096 33 0
2026/10/15 11:55:19.709766 [Debug] [2286240241] proxy: XtlsPadding 174 1086 0
2026/10/15 11:55:19.709770 [Debug] [2286240241] proxy: XtlsPadding 8018 153 0
2026/10/15 11:55:19.709773 [Debug] [2286240241] proxy: XtlsPadding 4096 169 0
2026/10/15 11:55:19.709776 [Debug] [2286240241] proxy: XtlsPadding 4096 6 0
2026/10/15 11:55:19.709780 [Debug] [2286240241] proxy: XtlsPadding 196 711 0
2026/10/15 11:55:19.709783 [Debug] [2286240241] proxy: XtlsPadding 7996 104 0
2026/10/15 11:55:19.709801 [Debug] [2286240241] proxy: XtlsPadding 4096 56 0
2026/10/15 11:55:19.709805 [Debug] [2286240241] proxy: XtlsPadding 4096 12 0
2026/10/15 11:55:19.709809 [Debug] [2286240241] proxy: XtlsPadding 218 773 0
2026/10/15 11:55:19.714427 [Debug] [2286240241] proxy: ReshapeMultiBuffer 4096 4096 4096 4096 22 8170 4096 4096 44 8148 4096 4096 66 8126 4096 4096
2026/10/15 11:55:19.714439 [Debug] [2286240241] proxy: XtlsPadding 4096 228 0
2026/10/15 11:55:19.714445 [Debug] [2286240241] proxy: XtlsPadding 4096 232 0
2026/10/15 11:55:19.714449 [Debug] [2286240241] proxy: XtlsPadding 4096 11 0
2026/10/15 11:55:19.714452 [Debug] [2286240241] proxy: XtlsPadding 4096 55 0
2026/10/15 11:55:19.714456 [Debug] [2286240241] proxy: XtlsPadding 22 1278 0
2026/10/15 11:55:19.714460 [Debug] [2286240241] proxy: XtlsPadding 8170 1 0
2026/10/15 11:55:19.714463 [Debug] [2286240241] proxy: XtlsPadding 4096 240 0
2026/10/15 11:55:19.714466 [Debug] [2286240241] proxy: XtlsPadding 4096 255 0
2026/10/15 11:55:19.714471 [Debug] [2286240241] proxy: XtlsPadding 44 1281 0
2026/10/15 11:55:19.714474 [Debug] [2286240241] proxy: XtlsPadding 8148 20 0
2026/10/15 11:55:19.714477 [Debug] [2286240241] proxy: XtlsPadding 4096 2 0
2026/10/15 11:55:19.714481 [Debug] [2286240241] proxy: XtlsPadding 4096 194 0
2026/10/15 11:55:19.714485 [Debug] [2286240241] proxy: XtlsPadding 66 1113 0
2026/10/15 11:55:19.714488 [Debug] [2286240241] proxy: XtlsPadding 8126 45 0
2026/10/15 11:55:19.714492 [Debug] [2286240241] proxy: XtlsPadding 4096 231 0
2026/10/15 11:55:19.714495 [Debug] [2286240241] proxy: XtlsPadding 4096 59 0
2026/10/15 11:55:19.714907 [Debug] [2286240241] proxy: ReshapeMultiBuffer 88 8104 4096 4096 110 8082 4096 4096 132 8060 4096 4096 154 8038 4096 4096
2026/10/15 11:55:19.714916 [Debug] [2286240241] proxy: XtlsPadding 88 1190 0
2026/10/15 11:55:19.714920 [Debug] [2286240241] proxy: XtlsPadding 8104 67 0
2026/10/15 11:55:19.714924 [Debug] [2286240241] proxy: XtlsPadding 4096 50 0
2026/10/15 11:55:19.714927 [Debug] [2286240241] proxy: XtlsPadding 4096 175 0
2026/10/15 11:55:19.714931 [Debug] [2286240241] proxy: XtlsPadding 110 1076 0
2026/10/15 11:55:19.714935 [Debug] [2286240241] proxy: XtlsPadding 8082 89 0
2026/10/15 11:55:19.714938 [Debug] [2286240241] proxy: XtlsPadding 4096 255 0
2026/10/15 11:55:19.714951 [Debug] [2286240241] proxy: XtlsPadding 4096 58 0
2026/10/15 11:55:19.714956 [Debug] [2286240241] proxy: XtlsPadding 132 826 0
2026/10/15 11:55:19.714959 [Debug] [2286240241] proxy: XtlsPadding 8060 111 0
2026/10/15 11:55:19.714969 [Debug] [2286240241] proxy: XtlsPadding 4096 142 0
2026/10/15 11:55:19.714973 [Debug] [2286240241] proxy: XtlsPadding 4096 252 0
2026/10/15 11:55:19.714977 [Debug] [2286240241] proxy: XtlsPadding 154 988 0
2026/10/15 11:55:19.714980 [Debug] [2286240241] proxy: XtlsPadding 8038 133 0
2026/10/15 11:55:19.714984 [Debug] [2286240241] proxy: XtlsPadding 4096 143 0
2026/10/15 11:55:19.714988 [Debug] [2286240241] proxy: XtlsPadding 4096 121 0
2026/10/15 11:55:19.715504 [Debug] [2286240241] proxy: ReshapeMultiBuffer 176 8016 4096 4096 198
2026/10/15 11:55:19.715515 [Debug] [2286240241] proxy: XtlsPadding 176 846 0
2026/10/15 11:55:19.715519 [Debug] [2286240241] proxy: XtlsPadding 8016 155 0
2026/10/15 11:55:19.715522 [Debug] [2286240241] proxy: XtlsPadding 4096 20 0
2026/10/15 11:55:19.715526 [Debug] [2286240241] proxy: XtlsPadding 4096 42 0
2026/10/15 11:55:19.715529 [Debug] [2286240241] proxy: XtlsPadding 198 1127 0
2026/10/15 11:55:19.720783 [Debug] [2286240241] proxy: Xtls Unpadding new block, content 47 padding 878 command 2
2026/10/15 11:55:19.720794 [Debug] [2286240241] proxy: CopyRawConn splice
2026/10/15 11:55:19.723744 [Debug] [2286240241] proxy: XtlsPadding 24 1314 2
Server log
Details
Xray 26.10.10 (Xray, Penetrates Everything.) 701af60 (go1.27.2 linux/amd64)
A unified platform for anti-censorship.
2026/10/15 11:55:19.327008 [Info] infra/conf/serial: Reading config: &{Name:server.json Format:json}
2026/10/15 11:55:19.351613 [Debug] app/log: Logger started
2026/10/15 11:55:19.358302 [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:8443
2026/10/15 11:55:19.414484 [Info] transport/internet/tcp: listening tcp on 127.0.0.1:8443
2026/10/15 11:55:19.416422 [Warning] core: Xray 26.10.10 started
2026/10/15 11:55:19.703574 [Info] [1150408639] proxy/vless/inbound: firstLen = 1186
2026/10/15 11:55:19.703611 [Info] [1150408639] proxy/vless/inbound: received request for tcp:127.0.0.1:9000
2026/10/15 11:55:19.703621 [Info] [1150408639] app/dispatcher: default route for tcp:127.0.0.1:9000
2026/10/15 11:55:19.703626 [Info] [1150408639] transport/internet/tcp: dialing TCP to tcp:127.0.0.1:9000
2026/10/15 11:55:19.703630 [Debug] [1150408639] transport/internet: dialing to tcp:127.0.0.1:9000
2026/10/15 11:55:19.703640 from 127.0.0.1:49342 accepted tcp:127.0.0.1:9000
2026/10/15 11:55:19.703753 [Info] [1150408639] proxy/freedom: connection opened to tcp:127.0.0.1:9000, local endpoint 127.0.0.1:52930, remote endpoint 127.0.0.1:9000
2026/10/15 11:55:19.703985 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 1455 padding 38 command 0
2026/10/15 11:55:19.703999 [Debug] [1150408639] proxy: XtlsFilterTls found tls client hello! 1121
2026/10/15 11:55:19.704868 [Debug] [1150408639] proxy: XtlsFilterTls found tls 1.3! 1684 TLS_AES_128_GCM_SHA256
2026/10/15 11:55:19.704882 [Debug] [1150408639] proxy: XtlsPadding 1684 250 0
2026/10/15 11:55:19.708348 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 64 padding 1190 command 0
2026/10/15 11:55:19.708359 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8128 padding 24 command 0
2026/10/15 11:55:19.708364 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 231 command 0
2026/10/15 11:55:19.708368 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 107 command 0
2026/10/15 11:55:19.708372 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 86 padding 814 command 0
2026/10/15 11:55:19.708375 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8106 padding 65 command 0
2026/10/15 11:55:19.709578 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 33 command 0
2026/10/15 11:55:19.709589 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 6 command 0
2026/10/15 11:55:19.709592 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 108 padding 826 command 0
2026/10/15 11:55:19.709596 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8084 padding 18 command 0
2026/10/15 11:55:19.709600 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 208 command 0
2026/10/15 11:55:19.709603 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 212 command 0
2026/10/15 11:55:19.709606 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 130 padding 1128 command 0
2026/10/15 11:55:19.709610 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8062 padding 109 command 0
2026/10/15 11:55:19.713045 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 112 command 0
2026/10/15 11:55:19.713064 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 140 command 0
2026/10/15 11:55:19.713070 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 152 padding 904 command 0
2026/10/15 11:55:19.713075 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8040 padding 131 command 0
2026/10/15 11:55:19.713549 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 245 command 0
2026/10/15 11:55:19.713563 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 33 command 0
2026/10/15 11:55:19.713569 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 174 padding 1086 command 0
2026/10/15 11:55:19.713574 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8018 padding 153 command 0
2026/10/15 11:55:19.713589 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 169 command 0
2026/10/15 11:55:19.713594 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 6 command 0
2026/10/15 11:55:19.713598 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 196 padding 711 command 0
2026/10/15 11:55:19.713603 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 7996 padding 104 command 0
2026/10/15 11:55:19.713607 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 56 command 0
2026/10/15 11:55:19.713613 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 12 command 0
2026/10/15 11:55:19.713617 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 218 padding 773 command 0
2026/10/15 11:55:19.714668 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 228 command 0
2026/10/15 11:55:19.714680 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 232 command 0
2026/10/15 11:55:19.714684 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 11 command 0
2026/10/15 11:55:19.714688 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 55 command 0
2026/10/15 11:55:19.714692 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 22 padding 1278 command 0
2026/10/15 11:55:19.714695 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8170 padding 1 command 0
2026/10/15 11:55:19.714699 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 240 command 0
2026/10/15 11:55:19.714703 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 255 command 0
2026/10/15 11:55:19.714707 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 44 padding 1281 command 0
2026/10/15 11:55:19.714711 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8148 padding 20 command 0
2026/10/15 11:55:19.714714 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 2 command 0
2026/10/15 11:55:19.714718 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 194 command 0
2026/10/15 11:55:19.714722 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 66 padding 1113 command 0
2026/10/15 11:55:19.714735 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8126 padding 45 command 0
2026/10/15 11:55:19.714740 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 231 command 0
2026/10/15 11:55:19.714744 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 59 command 0
2026/10/15 11:55:19.715437 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 88 padding 1190 command 0
2026/10/15 11:55:19.718208 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8104 padding 67 command 0
2026/10/15 11:55:19.718220 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 50 command 0
2026/10/15 11:55:19.718223 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 175 command 0
2026/10/15 11:55:19.718225 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 110 padding 1076 command 0
2026/10/15 11:55:19.718228 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8082 padding 89 command 0
2026/10/15 11:55:19.718230 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 255 command 0
2026/10/15 11:55:19.718233 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 58 command 0
2026/10/15 11:55:19.718236 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 132 padding 826 command 0
2026/10/15 11:55:19.718240 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8060 padding 111 command 0
2026/10/15 11:55:19.718245 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 142 command 0
2026/10/15 11:55:19.718248 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 252 command 0
2026/10/15 11:55:19.718258 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 154 padding 988 command 0
2026/10/15 11:55:19.718262 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8038 padding 133 command 0
2026/10/15 11:55:19.718266 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 143 command 0
2026/10/15 11:55:19.718270 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 121 command 0
2026/10/15 11:55:19.718273 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 176 padding 846 command 0
2026/10/15 11:55:19.718275 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 8016 padding 155 command 0
2026/10/15 11:55:19.718278 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 20 command 0
2026/10/15 11:55:19.718280 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 4096 padding 42 command 0
2026/10/15 11:55:19.718291 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 198 padding 1127 command 0
2026/10/15 11:55:19.719889 [Debug] [1150408639] proxy: XtlsPadding 47 878 2
2026/10/15 11:55:19.723929 [Debug] [1150408639] proxy: Xtls Unpadding new block, content 24 padding 1314 command 2
Activity
RPRX commentedon Oct 16, 2026
@yuhan6665