-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Fix: do not leave empty connetion #3565
Conversation
https://t.me/projectXray/3782602 Co-authored-by: Fangliding <Fangliding.fshxy@outlook.com> Co-authored-by: xqzr <34030394+xqzr@users.noreply.github.com> Co-authored-by: ll11l1lIllIl1lll <88377095+ll11l1lIllIl1lll@users.noreply.github.com>
Brief: |
@Fangliding |
It requires both session resumption and using http3.MethodGet0RTT/http3.MethodHead0RTT |
we can use GET for both upload and download, and distinguish upload and download on the server by path. it can be done in a backwards-compatible way. what I am not sure about however is if "GET with a request body" is a legitimate construct that will pass CDN. |
Like WS early data, maybe we can put some data in request header? |
|
'GET with a request body' maybe not supported by some CDN or software |
yeah i think it's the same suggestion as fangliding |
|
quic-go 没复用连接这个问题是比较诡异的,毕竟多个 POST 时它应该是复用了连接,但不知道为什么代理个新连接它就不复用了 |
there is one commit for this PR on main branch. it looks squashed to me. do you mean to keep the PR number in the commit message or something like that? can still go to it from here |
是的, |
总之这个 commit 的 title 也是看起来一头雾水的,至少要指明是 SplitHTTP 吧,麻烦 @mmmray 把它改成这样:
|
Remove keep alive since quic-go/http3 doesn't support stream reuse Discussion see https://t.me/projectXray/3782492 Co-authored-by: Fangliding <Fangliding.fshxy@outlook.com> Co-authored-by: xqzr <34030394+xqzr@users.noreply.github.com> Co-authored-by: ll11l1lIllIl1lll <88377095+ll11l1lIllIl1lll@users.noreply.github.com>
ok done |
一直都是Squash and merge啊 rebase那个选项会显示n个commit(如果有)然后xxx authored and xxx commited 除非是很简单的修改不然一般都不会用 虽然读后面的聊天记录知道了是没有留pr number em 我也觉得这标题不对 所以重写commit message的时候标题是直接ctrl+a的 下次会注意一点 一方面它确实可以直接从那mmm说的那地方点进来 还有如果只想squash的话可以从仓库设置里关掉(create merge commits就已经被关掉了) |
不过我觉得这个 KeepAlivePeriod 仍然没必要,可以删掉,Allow0RTT 是“Only valid for the server.”,也应该删掉 MaxIdleTimeout 不是连接保活 90s,而是不活跃超时,“If this value is zero, the timeout is set to 30 seconds.” HandshakeIdleTimeout 是“If this value is zero, the timeout is set to 5 seconds.”,我觉得这些都可以先用默认值, |
I took a look at connection lifetimes again today. I don't care about keepalive (it can be disabled), but I think the new MaxIdleTimeout (30s) is a bit too short. Other transports allow an idle tunneled TCP connection to stay open for at least a few minutes, but splith3 tears it down exactly after 30s. It seems to me the defaults from the QUIC transport would be very reasonable: Xray-core/transport/internet/quic/dialer.go Lines 143 to 145 in 7e24239
what do you think? |
Copy the settings from QUIC transport. See XTLS#3565 (comment) -- Tested with CDN and it seems better than before (fewer reconnections) keep-alive packets are still turned off, so the original concern should be resolved.
Remove keep alive since quic-go/http3 doesn't support stream reuse Discussion see https://t.me/projectXray/3782492 Co-authored-by: Fangliding <Fangliding.fshxy@outlook.com> Co-authored-by: xqzr <34030394+xqzr@users.noreply.github.com> Co-authored-by: ll11l1lIllIl1lll <88377095+ll11l1lIllIl1lll@users.noreply.github.com>
https://t.me/projectXray/3782602