问题标签 [c-ares]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 请求库无法解析非权威的 dns 查找
我有一个 python gunicorn Web 应用程序,当我尝试使用 coredns 缓存解析内部 dns 名称时抛出以下错误:
我可以使用 dig 解决同样的问题:
需要注意的一点是,从qr rd
. 如果我切换回/etc/resolv.conf
指向权威 dns 服务器而不是 coredns 服务器充当缓存,一切都会再次正常工作。
requests 库是否有任何从非权威来源解决的问题,或者有没有办法将库配置为接受来自非权威 dns 来源的响应?
编辑 2 月 20 日
运行应用程序的服务器已正确配置为与上面指定的 dns 服务器通信:
编辑 2 月 20 日 8:50 AM PST
如果我立即背靠背运行它,我已经能够在机器内只使用 python shell 来重现它:
dns端的日志:
同样,失败的响应丢失了aa
。
编辑 2 月 20 日太平洋标准时间下午 6:05
又过了几个小时,我只是通过这个 PR 禁用 coredns 中的负缓存来解决这个问题:https ://github.com/coredns/coredns/pull/2588 。
这似乎解决了这个问题。但是话又说回来,我仍然不知道是什么原因导致来自 coredns 缓存的那些负面 ipv6 查询结果导致套接字库中的异常,而显然 ipv4 正在解决。
protocol-buffers - 无法在 Linux x64 发布配置上使用 gRPC 构建项目
我有一个使用 gRPC 的项目。它成功构建在 Windows 上的任何配置(调试\发布)和 Linux 上的调试配置上。但在发布模式下,我有下一个错误:
在 CMake 输出(link.txt)中:
那个奇怪的附加依赖是-lnsl
什么?以及如何解决?
c++ - 嵌套虚拟化的 DNS 解析失败
我正在使用以下 gRPC 设置:gRPC 1.27.1 installed through vcpkg for Visual Studio 2015。
C# 服务器- 在 Azure VM 中运行。
C++ 客户端- 在 Hyper V 映像中运行,该映像嵌套在运行服务器的 Azure VM 中。
当我尝试使用服务器机器名称连接到服务器时,我收到DNS resolution failure
错误消息。如果我使用机器名称连接,我只会收到该错误。如果我使用服务器机器的内部 IP 进行连接,则连接工作正常。
以下是我收到的错误日志:
感兴趣的线是:
设置GRPC_DNS_RESOLVER=native
确实解决了这个问题,但是我很想知道为什么默认解析器 ( c-ares
) 不起作用。是否使用 GRPC_DNS_RESOLVER=native OK 进行生产?
我认为c-ares
gRPC 不需要,我可以选择不安装它。这是可能的,还是我必须使用GRPC_DNS_RESOLVER=native
.
编辑:
我已经能够在一个更简单的场景中复制这个问题。
如果我只是让服务器运行并使用来自同一台机器的 C++ 客户端连接到它,而不是使用 localhost 或 localhost IP 我使用实际的机器名称,那么我会得到同样的错误。
node.js - C-ares 1.16.1-r0 的扭锁问题
在 Jenkins 中创建构建时出现扭锁错误。以下是错误的详细信息。
android - NMAKE:致命错误 U1073:不知道如何制作“ares_android.h”
将 c-ares 版本从 1.14 更新到 1.17.1 时,出现错误“NMAKE: fatal error U1073: don't know how to make 'ares_android.h'” 不知道如何在此处进行。任何类型的指导都会非常有帮助。
问候, 安妮塔
dns - 如何使用 libcurl 尝试 dns 中的所有服务器?
我需要使用 Linux/C++/libcurl 定期随机测试可通过单个 DNS 名称获得的多台服务器的响应,例如
列表发生变化。当我尝试https://example.com
libcurl 时,总是使用相同的 IP 作为 TTL 的跨度,我无法切换到下一个主机。有CURLOPT_DNS_CACHE_TIMEOUT
setopt,但将其设置为零无济于事 - 即使我完全重新创建 easycurl 对象,我仍然获得相同的 IP。因此,这无济于事:curl - How to set up TTL for dns cache & How to clear the curl cache
我当然可以手动解析 DNS 名称并进行迭代,但是有什么选择吗?随机投票是可以的。我看到 curl 使用 c-ares。有没有办法清理那里的缓存,它会有帮助吗?
c - 这个神秘的 *** 检测到缓冲区溢出的来源是什么 ***:终止错误
我有一个程序,它从一个域名列表文件中读取。它执行异步 DNS,然后使用异步 epoll 循环下载每个域的登录页面。
该程序在数千次迭代中运行良好,然后出现*** buffer overflow detected ***: terminated
错误。这是回溯:
如您所见,回溯指向对ares_fds
. 有问题的代码行是:
我看不到那行代码中如何存在缓冲区溢出。我可以做些什么来进一步调试并找到并解决问题的任何想法。对于那些感兴趣的人来说,最小的复制器如下:
如果我注释掉创建套接字的部分,则不会发生中止:
所以无论问题是什么,它都与我有许多套接字文件描述符这一事实有关。有任何想法吗?
进一步编辑:
进一步调试似乎表明问题与打开的套接字数量有关。如果我将创建的套接字数量减少到 1017,则不再发生中止。如果我创建 1018 个套接字,程序将中止。
c - 如何在 epoll 中使用 c-ares?
c-ares
我有一个使用库调用执行异步 DNS 解析的工作代码。该程序用于select
监视文件描述符,FD_SETSIZE
在我的系统上最多为 1024。我想使用更多的文件描述符,所以想重写代码以使用epoll
而不是select
.
这是select
我当前程序的基础功能:
在发布我的问题之前我已经做了一些谷歌搜索,我发现要实现这个epoll
我不能再使用ares_fds
,但必须使用ares_timeout
and代替。但除此之外,我不知道如何做到这一点,也找不到任何使用with 的示例代码。任何人都可以修改下面提供的代码以使用而不是?或者至少给我一些指导让我开始?ares_process
ares_getsock()
ares_process_fd()
epoll
c-ares
epoll
select
该程序需要一个在每一行都有一个域名的文件才能工作。