cobalt - 网络为IPV6时cobalt无法成功运行
问题描述
Cobalt连接IPV6网络时无法成功运行,发现日志会打印如下:
[16:19:42][cobalt]>[0822/081942:ERROR:h5vcc_url_handler.cc(122)] 网络错误后停止 [16:19:42][cobalt]>[1742:763719731:INFO:system_raise_platform_error.cc (50)] SbSystemRaisePlatformError:连接错误。[16:19:42][cobalt]>[1742:764083748:INFO:main.cc(128)] 钴主进程退出
我们检查网络,发现网络通畅,其他app可以正常运行。我们需要对cobalt做哪些配置才能让它在IPV6网络环境下运行?
我们发现虽然DNS列出了IPV6和IPV4的ip地址,但是cobalt浏览器并没有使用IPV6地址,而是使用了IPV4的ip地址。但是,IPV4在我们的IPV6网络环境中被禁止了,所以我们无法成功运行cobalt。我想知道为什么cobalt在IPV6网络环境下不使用IPV6 IP地址?或者为什么在连接IPV4地址失败后不试试IPV6 IP地址
解决方案
我知道这是旧的,但我想关闭这个循环:
目前,没有一种简单的方法可以通过 Starboard 级别的配置来选择 IPv6。
对于短期解决方案,您可以实现类似于以下内容的 IPv6 功能MakeAddressListStartWithIPv4
:
https ://cobalt.googlesource.com/cobalt/+/refs/heads/20.lts.1+/src/net/socket/transport_client_socket_pool.h #123
什么MakeAddressListStartWithIPv4
是遍历列表并找到要使用的第一个 IPv4 地址,您可以对 IPv6 执行相同的操作。Cobalt 中的 IP 地址池(IPv4 或 IPv6)没有排序,因此第一个可用的 IP 地址可以是 IPv4 或 IPv6。您的新函数将从该池中查找并使用 IPv6 地址。
一般来说,我们不建议 Cobalt 用户对 Cobalt 通用代码进行更改,但考虑到情况和您的需求,进行此修改是可以接受的并且是一种短期解决方案。
从长远来看,如果 Cobalt 团队实施 Starboard 级别的配置来控制这一点,我们将建议 Cobalt 用户使用 Starboard 解决方案。
如果您想实现自己的 Starboard 级解决方案,我们也欢迎社区对 Cobalt 代码库的贡献。您可以在以下位置查看 Cobalt 贡献指南:https ://cobalt.dev/contributors/index.html
推荐阅读
- hyperledger-fabric - ProposalResponsePayloads 不匹配 - ERC-1155 Chaincode / fabric-samples
- pyinfra - pyinfra:如何知道操作何时导致更改
- go - 如何在没有模板函数的情况下在 Go 模板中加入字符串?
- powershell - 如何使用powershell在除第一列和csv中的空单元格值之外的所有列中添加额外的';'(分号)或任何特殊字符
- javascript - 将模块文件/流的内容读入 BLOB
- rename - 如何重命名受保护的对象条目
- r - 基于两列中的嵌套类别在 R 中创建和导出 Excel 文件
- python - Django 部署到 cPanel:Passengerfile.json' 以供阅读: Permission denied (errno=13)
- python - 张量流中的对象计数
- ios - 使用 React Native Flipper 时,多个命令生成 OpenSSL.xcframework