Skip to content

Conversation

@yuhan6665
Copy link
Member

@yuhan6665 yuhan6665 commented Dec 23, 2025

Fix #5446
I'm not sure about vless inbound calling WrapLink() for RequestCommandRvs.
Please take a look @Fangliding @RPRX

@RPRX
Copy link
Member

RPRX commented Dec 23, 2025

这样改的话似乎会影响 @wyx2685

@wyx2685
Copy link
Contributor

wyx2685 commented Dec 23, 2025

居然被@了
这边不用考虑

@yuhan6665
Copy link
Member Author

我理解不在 dispatch 时候 cast dispatcher 就行 既然要删掉 那顺便 refactor

@xtlsee
Copy link
Contributor

xtlsee commented Dec 25, 2025

这里对于自定义的 DefaultDispatcher 会有类型兼容性问题的

https://github.com/XTLS/Xray-core/pull/5466/files#diff-35b30f4c19a774a865d83f273a0a5f8a6925c96d6c3f4e6bbf2aaca850705b62L78

https://github.com/XTLS/Xray-core/pull/5466/files#diff-35b30f4c19a774a865d83f273a0a5f8a6925c96d6c3f4e6bbf2aaca850705b62L87

这是上一次 @Fangliding 风筝当时做的兼容性重构。
不建议对 vless/inbound 进行再次回滚重构,建议在这里加一些注释说明一下。

f9dd3ae#diff-35b30f4c19a774a865d83f273a0a5f8a6925c96d6c3f4e6bbf2aaca850705b62R78-R93

重构 /proxy/vless/inbound/inbound.go 代码里使用 routing.WrapLinkDispatcher 接口是不是更好一些

type Handler struct {
        // ...
	dispatcher             routing.WrapLinkDispatcher
        // ...
}
	handler := &Handler{
                // ...
		dispatcher:             v.GetFeature(routing.DispatcherType()).(routing.WrapLinkDispatcher),
                // ...
	}
	if request.Command == protocol.RequestCommandRvs {
		r, err := h.GetReverse(account)
		if err != nil {
			return err
		}
		return r.NewMux(ctx, h.dispatcher.WrapLink(ctx, &transport.Link{Reader: clientReader, Writer: clientWriter}))
	}

Since mux will add traffic stats in sub connection's dispatch function
Adding additional stats result to double counting
@yuhan6665
Copy link
Member Author

@xtlsee 行吧 给你改成 interface 了

@xtlsee
Copy link
Contributor

xtlsee commented Dec 25, 2025

@yuhan6665 牛逼,大神。优雅

@Fangliding
Copy link
Member

虽然我记得这个wrapLink好像就是从函数改过来的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

VLESS(without flow): incorrect traffic calculation

5 participants