Refactor code to use DispatchLink() in vmess inbound
- Always apply NoTerminationSignal
这个很奇怪 vmess 改了 Link 之后 一般用法没问题 就是 Mux(TCP) 和 reverse proxy 会出现 头几个连接正常 后面死掉的情况 但是 VLESS 却没事
~~好像是因为 vmess 的 mux 只会 DispatchLink 一次 而 VLESS 会多次~~
这样可以修复 4eadb8f 也就是说在 Mux 环境下省掉 pipe 是可能的 但是由于多个子链接会同时写 势必导致代码逻辑较复杂的各个地方需要加锁 所以我觉得在 Mux 环境下用 pipe 的设计可能更好一点? @RPRX
~~我还想让 VLESS 出站也能返回个 reader / writer,这样可以把客户端 outbound reverse 那个 pipe 给省掉~~
在 Vmess 加锁我觉得不对 因为是全局锁 而 pipe 是锁单个连接 把 pipe 转移到 Mux 那边应该可以 还需要修 reverse。。 另外加了 vlessenc (Mux Tcp) 测试
修好了 你们看一下 mux server 和 reverse portal 这样改行不行 @RPRX @Fangliding
我觉得 VMess inbound 倒是无所谓,只是往 Mux/Reverse 再加 pipe 这种事情尽量避免吧
我觉得 VMess inbound 倒是无所谓,只是往 Mux/Reverse 再加 pipe 这种事情尽量避免吧
我试了一下 shadowsocks inbound 使用 DispatchLink 也有同样的问题 也就是说 一个 Mux 连接承载多个子连接 应该有一个 Pipe 控制不同子连接 同时 写回包的情况。 Vless 不需要应该被视为是一个特例。 如果 Mux/Reverse 加 pipe 那么所有入站都可以简化 pipe,但是如果不加 只有 Vless 入站能去掉 pipe
Vless 不需要应该被视为是一个特例。
感觉有点怪,难道是因为 VLESS 的加解密是额外的 Read/Write?
Vless 不需要应该被视为是一个特例。
感觉有点怪,难道是因为 VLESS 的加解密是额外的 Read/Write?
Donno, but in deed vmess/shadowsocks use writeMultiBuffer() instead of conn write()