OpenClash
OpenClash copied to clipboard
[Bug] 下载超时后提示下载成功,并继续执行内核更新流程
Verify Steps
- [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
- [X] Branch 我知道 OpenClash 的 Dev 分支切换开关位于插件设置-版本更新中,或者我会手动下载并安装 Dev 分支的 OpenClash
- [X] Latest 我已经使用最新 Dev 版本测试过,问题依旧存在
- [X] Relevant 我知道 OpenClash 与 内核(Core)、控制面板(Dashboard)、在线订阅转换(Subconverter)等项目之间无直接关系,仅相互调用
- [X] Definite 这确实是 OpenClash 出现的问题
- [ ] Contributors 我有能力协助 OpenClash 开发并解决此问题
- [ ] Meaningless 我提交的是无意义的催促更新或修复请求
OpenClash Version
v0.46.007-beta
Bug on Environment
Official OpenWrt
OpenWrt Version
OpenWrt 22.03.4
Bug on Platform
Linux-amd64(x86-64)
Describe the Bug
当前版本不会检查内核下载是否成功而始终执行更新流程,导致服务无法启动
To Reproduce
在管理面板中打断下载内核的 TCP 连接
OpenClash Log
2024-04-18 18:37:49 OpenClash 开始关闭...
2024-04-18 18:37:48 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:48 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:48 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-18 18:37:47 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-18 18:37:43 启动前调用内核测试配置文件...
2024-04-18 18:37:43 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-18 18:37:43 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-18 18:37:43 第六步: 等待主程序下载外部文件...
2024-04-18 18:37:40 第五步: 检查内核启动状态...
2024-04-18 18:37:39 启动前调用内核测试配置文件...
2024-04-18 18:37:39 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-18 18:37:39 第四步: 启动主程序...
2024-04-18 18:37:39 提示:开始运行自定义覆写脚本...
2024-04-18 18:37:39 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-18 18:37:39 第三步: 修改配置文件...
2024-04-18 18:37:39 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-18 18:37:38 第二步: 组件运行前检查...
2024-04-18 18:37:38 第一步: 获取配置...
2024-04-18 18:37:38 OpenClash 开始启动...
2024-04-18 18:37:38 第六步:删除 OpenClash 残留文件...
2024-04-18 18:37:35 第五步: 重启 Dnsmasq 程序...
2024-04-18 18:37:35 第四步: 关闭 Clash 主程序...
2024-04-18 18:37:35 第三步: 关闭 OpenClash 守护程序...
2024-04-18 18:37:35 第二步: 删除 OpenClash 防火墙规则...
2024-04-18 18:37:35 第一步: 备份当前策略组状态...
2024-04-18 18:37:35 OpenClash 开始关闭...
2024-04-18 18:37:35 OpenClash 重新启动中...
2024-04-18 18:37:35 【Meta】版本内核更新成功!
2024-04-18 18:37:35 【Meta】版本内核下载成功,开始更新...
2024-04-18 18:34:32【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7360628 out of 7585662 bytes received curl: (28) Operation timed out after 60001 milliseconds with 6162093 out of 7585662 bytes received curl: (28) Operation timed out after 60001 milliseconds with 6059361 out of 7585662 bytes received】
OpenClash Config
No response
Expected Behavior
下载失败后提示、停止更新流程并清理临时文件
Additional Context
No response
18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。
18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。
下载后启动失败了,文件不完整;不修改配置的情况下手动下载后放进去就又能运行了
你上面那个日志,下载成功的信息应该不是你手动下载放进去的信息提示吧。
你上面那个日志,下载成功的信息应该不是你手动下载放进去的信息提示吧。
所以我的意思是 OpenClash 不会判断下载文件有没有损坏,无视报错地显示下载成功,然后进行后续步骤。后续步骤在规则文件测试就失败了,因为文件根本运行不了;测试失败后还原配置文件自然也没用
18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。
今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦
完整流程:
2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:33 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:33 第一步: 备份当前策略组状态...
2024-04-21 10:10:33 OpenClash 开始关闭...
2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败
2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动...
2024-04-21 10:10:27 启动前调用内核测试配置文件...
2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序...
2024-04-21 10:10:27 第六步: 等待主程序下载外部文件...
2024-04-21 10:10:24 第五步: 检查内核启动状态...
2024-04-21 10:10:23 启动前调用内核测试配置文件...
2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动...
2024-04-21 10:10:23 第四步: 启动主程序...
2024-04-21 10:10:23 提示:开始运行自定义覆写脚本...
2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】
2024-04-21 10:10:23 第三步: 修改配置文件...
2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动...
2024-04-21 10:10:23 第二步: 组件运行前检查...
2024-04-21 10:10:22 第一步: 获取配置...
2024-04-21 10:10:22 OpenClash 开始启动...
2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件...
2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序...
2024-04-21 10:10:20 第四步: 关闭 Clash 主程序...
2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序...
2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则...
2024-04-21 10:10:20 第一步: 备份当前策略组状态...
2024-04-21 10:10:20 OpenClash 开始关闭...
2024-04-21 10:10:20 OpenClash 重新启动中...
2024-04-21 10:10:20 【Meta】版本内核更新成功!
2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新...
2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】
2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传...
2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN
18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。
今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦
完整流程:
2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件... 2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序... 2024-04-21 10:10:33 第四步: 关闭 Clash 主程序... 2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序... 2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则... 2024-04-21 10:10:33 第一步: 备份当前策略组状态... 2024-04-21 10:10:33 OpenClash 开始关闭... 2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动... 2024-04-21 10:10:27 启动前调用内核测试配置文件... 2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动... 2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序... 2024-04-21 10:10:27 第六步: 等待主程序下载外部文件... 2024-04-21 10:10:24 第五步: 检查内核启动状态... 2024-04-21 10:10:23 启动前调用内核测试配置文件... 2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动... 2024-04-21 10:10:23 第四步: 启动主程序... 2024-04-21 10:10:23 提示:开始运行自定义覆写脚本... 2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】 2024-04-21 10:10:23 第三步: 修改配置文件... 2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动... 2024-04-21 10:10:23 第二步: 组件运行前检查... 2024-04-21 10:10:22 第一步: 获取配置... 2024-04-21 10:10:22 OpenClash 开始启动... 2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件... 2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序... 2024-04-21 10:10:20 第四步: 关闭 Clash 主程序... 2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序... 2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则... 2024-04-21 10:10:20 第一步: 备份当前策略组状态... 2024-04-21 10:10:20 OpenClash 开始关闭... 2024-04-21 10:10:20 OpenClash 重新启动中... 2024-04-21 10:10:20 【Meta】版本内核更新成功! 2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新... 2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】 2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传... 2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN
openclash本身应该只下载,不做文档crc校验,自己到mihomo下载手动上传更新了 应该不是很麻烦,就是不是很方便了
18:37:35 这个时间第一条就是下载成功啊。 看来你只看到了前面那条不成功的信息。
今天又碰到了一次这个问题,下载失败信息的时间是开始下载的时间(下载持续了几分钟都没有完成导致超时),下载失败后立刻提示下载成功并更新了内核,导致无法上网 因为内核损坏后无法上网,目前只能后台镜像一个 OpenClash 的 GitHub 项目,然后手动提取出内核上传,非常麻烦 完整流程:
2024-04-21 10:10:35 第六步:删除 OpenClash 残留文件... 2024-04-21 10:10:33 第五步: 重启 Dnsmasq 程序... 2024-04-21 10:10:33 第四步: 关闭 Clash 主程序... 2024-04-21 10:10:33 第三步: 关闭 OpenClash 守护程序... 2024-04-21 10:10:33 第二步: 删除 OpenClash 防火墙规则... 2024-04-21 10:10:33 第一步: 备份当前策略组状态... 2024-04-21 10:10:33 OpenClash 开始关闭... 2024-04-21 10:10:32 错误:无法获取 General 部分的转发端口设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:32 错误:无法获取 DNS 部分的运行模式设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:32 错误:无法获取 DNS 部分的监听端口设置, OpenClash 使用原始配置文件启动失败 2024-04-21 10:10:31 错误:OpenClash 启动失败,尝试使用原始配置文件启动... 2024-04-21 10:10:27 启动前调用内核测试配置文件... 2024-04-21 10:10:27 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动... 2024-04-21 10:10:27 错误:OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序... 2024-04-21 10:10:27 第六步: 等待主程序下载外部文件... 2024-04-21 10:10:24 第五步: 检查内核启动状态... 2024-04-21 10:10:23 启动前调用内核测试配置文件... 2024-04-21 10:10:23 提示:检测到配置了 Meta 内核专属功能,调用 Meta 内核启动... 2024-04-21 10:10:23 第四步: 启动主程序... 2024-04-21 10:10:23 提示:开始运行自定义覆写脚本... 2024-04-21 10:10:23 提示:您为 SOCKS5/HTTP(S) 代理设置的账户密码为【root:********】 2024-04-21 10:10:23 第三步: 修改配置文件... 2024-04-21 10:10:23 提示:由于文件【 /etc/config/openclash 】被修改,暂停快速启动... 2024-04-21 10:10:23 第二步: 组件运行前检查... 2024-04-21 10:10:22 第一步: 获取配置... 2024-04-21 10:10:22 OpenClash 开始启动... 2024-04-21 10:10:22 第六步:删除 OpenClash 残留文件... 2024-04-21 10:10:20 第五步: 重启 Dnsmasq 程序... 2024-04-21 10:10:20 第四步: 关闭 Clash 主程序... 2024-04-21 10:10:20 第三步: 关闭 OpenClash 守护程序... 2024-04-21 10:10:20 第二步: 删除 OpenClash 防火墙规则... 2024-04-21 10:10:20 第一步: 备份当前策略组状态... 2024-04-21 10:10:20 OpenClash 开始关闭... 2024-04-21 10:10:20 OpenClash 重新启动中... 2024-04-21 10:10:20 【Meta】版本内核更新成功! 2024-04-21 10:10:20 【Meta】版本内核下载成功,开始更新... 2024-04-21 10:07:17【/tmp/clash_meta.tar.gz】下载失败:【curl: (28) Operation timed out after 60000 milliseconds with 7495151 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 5942661 out of 7584650 bytes received curl: (28) Operation timed out after 60000 milliseconds with 6349477 out of 7584650 bytes received】 2024-04-21 10:07:17 【Meta】版本内核正在下载,如下载失败请尝试手动下载并上传... 2024-04-21 10:07:16 提示:如果下载失败,您可以尝试在覆写设置 - 常规设置 - Github地址修改选项中设置CDN
openclash本身应该只下载,不做文档crc校验,自己到mihomo下载手动上传更新了 应该不是很麻烦,就是不是很方便了
日志里能写出 curl 的返回值,应该往脚本里加一个判断就可以解决了
不会检查文件完整性,curl返回成功就是成功
不会检查文件完整性,curl返回成功就是成功
但是这个日志有点自相矛盾,前脚提示下载失败后脚就下载成功,说明脚本应该比较方便实现在下载失败后停止更新并清理 作者可以考虑加一下,对终端没有梯子的家庭组网很重要(下载失败后所有设备失去梯子,无法从外网下载完整内核,我自己是镜像了一个 OpenClash 的 GitHub 项目从 core 分支提取的)
curl有重试功能啊
你加CDN
curl有重试功能啊
我自己测试是只要任何原因打断 curl 发起的那个连接就直接结束了,不会重试。
你加CDN
这个虽然可行,但之前加 CDN 之后有些订阅规则就没法更新了