libevent2的evhttp获取网页数据失败(dns未能正确解析)

使用libevent2的evhttp请求阿里大于接口,调用失败,没有正确请求数据,但是利用curl可以正确访问。
使用抓包工具抓包分析,和curl发起的请求对比发现libevent2在dns查询后没有连接实际的ip地址建立连接,怀疑libevent2没有正确的对dns解析结果做处理。
网上搜索发现如下这篇文章:域名随机大小写导致libevent2的异步DNS解析失败

经过检验,确实时dns查询阿里大于api接口域名返回的应答信息中,域名大小写和请求时的有所不同,
于是翻看libevent2的代码,发现有函数evdns_base_set_option可以设置global_randomize_case的值,

在阿里大于接口请求前添加一样代码:
evdns_base_set_option(dnsbase, “randomize-case”, “0″);
重新编译运行,解决问题。

Popularity: 2% [?]

Random Posts

Comments

Leave a Reply