Skip to content

splithttp client with http3 connectivity issue #3673

@dyhkwong

Description

@dyhkwong

Integrity 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.

Version

498d8eb

Description

This issue is raised per request of #3570.

Since 22535d8, splithttp (with alpn h3 so it's http3) client does not work with trojan, vless, http, and vmess with zero security.

Symptom: Client only works on the first few connections. After a few seconds the log will be filled with app/proxyman/inbound: connection ends > proxy/socks: connection ends > context canceled, and new connections can't be established anymore. Connections can recover after a long time.

Additinal infomation: VMess with non-zero security does not have this issue. Splithttp with non-http3 also does not have this issue. Temporarily reverting 22535d8 can fix this.

Reproduction Method

Run both the following server and client configurations locally.
Configure browser to use the socks inbound and visit some websites.
After a few seconds no website can be opened anymore.

Client config

Details

{
	"log": {
		"loglevel": "debug"
	},
	"inbounds": [
		{
			"listen": "127.0.0.1",
			"port": 1080,
			"protocol": "socks",
			"settings": {
				"udp": true
			}
		}
	],
	"outbounds": [
		{
			"protocol": "vless",
			"settings": {
				"vnext": [
					{
						"address": "127.0.0.1",
						"port": 443,
						"users": [
							{
								"id": "00000000-0000-0000-0000-000000000000",
								"encryption": "none"
							}
						]
					}
				]
			},
			"streamSettings": {
				"security": "tls",
				"network": "splithttp",
				"tlsSettings": {
					"serverName": "example.com", 
					"allowInsecure": true,
					"alpn": [
						"h3"
					]
				}
			}
		}
	]
}

Server config

Details

{
	"log": {
		"loglevel": "debug"
	},
	"inbounds": [
		{
			"listen": "127.0.0.1",
			"port": 443,
			"protocol": "vless",
			"settings": {
				"clients": [
					{
						"id": "00000000-0000-0000-0000-000000000000"
					}
				],
				"decryption": "none"
			},
			"streamSettings": {
				"security": "tls",
				"network": "splithttp",
				"tlsSettings": {
					"certificates": [
						{
							"certificateFile": "certificate.crt",
							"keyFile": "key.key"
						}
					],
					"alpn": [
						"h3"
					]
				}
			}
		}
	],
	"outbounds": [
		{
			"protocol": "freedom"
		}
	]
}

certificate.crt and key.key.zip

Client log

client.log

Server log

server.log

server log should be not related

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions