首页 > 解决方案 > 网络为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地址

在此处输入图像描述

标签: cobalt

解决方案


我知道这是旧的,但我想关闭这个循环:

目前,没有一种简单的方法可以通过 Starboard 级别的配置来选择 IPv6。

对于短期解决方案,您可以实现类似于以下内容的 IPv6 功能MakeAddressListStartWithIPv4https ://cobalt.googlesource.com/cobalt/+/refs/heads/20.lts.1+/src/net/socket/transport_client_socket_pool.h #123

https://cobalt.googlesource.com/cobalt/+/refs/heads/20.lts.1+/src/net/socket/transport_client_socket_pool.cc#268

什么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


推荐阅读