Closed ghost closed 1 week ago
看了下代码,好像不止 darwin,Xray 在所有平台上都只有 isTCPSocket https://github.com/XTLS/Xray-core/issues/4007#issuecomment-2469777576
话说我看有人提过这个 interface 无效,你测试一下 h2 是有效的吗 https://github.com/XTLS/Xray-core/issues/4007#issuecomment-2469768041
测试h2有效,还有,这里貌似还漏了v6的处理
老生常谈的问题了 go自己的binddevice只在Linux实现了 照搬setsockopt不行那就gg 相关资料很少 只能说谁用mac谁修了 买的时候就该考虑到生态问题 要不就是当初qv群里的笑话 赞助开发者一台mac就修
¿坏了,我成end user了
我又看了下,仅 interface 而言,Xray 在 win 和 linux 上是放在 isTCPSocket 外面的,只有 darwin 是放在 isTCPSocket 里面
把 unix.SetsockoptInt 放到外面来,编译后运行会出现如下错误
如果简单放外面不行的话,那确实我们没有测试环境,你修一下看看
@Fangliding 话说 linux 上的 CustomSockopt 应该移到 isTCPSocket 外面,对 UDP 也生效,加个判断 level
还有顺序改为 level、opt、value、type 似乎更好
位子我当初没注意可以改一下 但是顺序我觉得原来是对的 和代码里顺序是一样的 SetsockoptInt/String level opt value
位子我当初没注意可以改一下 但是顺序我觉得原来是对的 和代码里顺序是一样的 SetsockoptInt/String level opt value
然鹅代码里最后才判断是 int 还是 str 才决定调用哪个函数,所以 type 放最后更合理
为了方便只能这样写 要不封装一下两个函数 顺序真没啥好纠结的 反正投到config里顺序也是随便写 没有什么逻辑含义 xhttp里一堆变量名还叫splithttp呢
为了方便只能这样写 要不封装一下两个函数
不用,只是你提到了代码里的顺序,我说代码里其实也是 type 放最后,因为本来就是 type 放最后更合理些
其实当初似乎应该无需用户指定 type,json 填数字就是 int,填字符串就是 str,现在 break 还来得及
故意的 因为除了这两种实际上还有更高级的sockopt操作 以后可能会有用才留在这 当然现在好像还没什么必要去加 这个功能说难听点可以叫堵嘴 一是避免sockopt里的东西堆得越来越长 二是避免以后有人可能请求新选项
不过不确定能不能区分 0 还是 "" https://github.com/XTLS/Xray-core/pull/3517#issuecomment-2217023138
还有顺序改为 level、opt、value、type 似乎更好
话说我发现代码里两个结构体的顺序本来就是这样,只是你写文档时不知道为啥把 type 放最上面了,改文档就行了
但是顺序我觉得原来是对的 和代码里顺序是一样的
这下被我抓到风扇没看代码在这儿尬聊了
完整性要求
描述
如题,darwin平台设置interface会漏udp,看了下确实没有对udp进行处理
https://github.com/XTLS/Xray-core/blob/44b1dd0e674347691c62a13d227edf0d36b7e290/transport/internet/sockopt_darwin.go#L100-L148
自己参考隔壁sb和v2,把 unix.SetsockoptInt 放到外面来,编译后运行会出现如下错误
希望官方能把这个问题修复,这对XHTTP上下行分离还是挺实用的,以及tun2socks前置场景
(感觉更像feature reqest而不是bug report重现方式
无
客户端配置
服务端配置
无
客户端日志
无
服务端日志
无