已合并
HTTP多路并发指定网卡 #94
HTTP多路并发指定网卡 #94
已合并
kurumi创建于 2025年12月25日
共 6 个文件变更+43-3
@@ -146,12 +146,14 @@ action("installCares") {
146 rebase_path(src_path, root_build_dir),146 rebase_path(src_path, root_build_dir),
147 rebase_path(code_dir, root_build_dir),147 rebase_path(code_dir, root_build_dir),
148 ]148 ]
149- inputs = [ src_path ]149+ inputs = []
150 outputs = []150 outputs = []
151 foreach(src, cares_srcs) {151 foreach(src, cares_srcs) {
152+ inputs += [ "$src_path/src/lib/" + src ]
152 outputs += [ "$code_dir/src/lib/" + src ]153 outputs += [ "$code_dir/src/lib/" + src ]
153 }154 }
154 foreach(test, sources_test) {155 foreach(test, sources_test) {
156+ inputs += [ "$src_path/" + test ]
155 outputs += [ "$code_dir/" + test ]157 outputs += [ "$code_dir/" + test ]
156 }158 }
157}159}
@@ -519,6 +519,9 @@ CARES_EXTERN void ares_set_local_ip6(ares_channel_t *channel,
519CARES_EXTERN void ares_set_local_dev(ares_channel_t *channel,519CARES_EXTERN void ares_set_local_dev(ares_channel_t *channel,
520 const char *local_dev_name);520 const char *local_dev_name);
521 521 
522+CARES_EXTERN void ares_set_dns_netid(ares_channel_t *channel,
523+ int32_t netId);
524+ 
522CARES_EXTERN void ares_set_socket_callback(ares_channel_t *channel,525CARES_EXTERN void ares_set_socket_callback(ares_channel_t *channel,
523 ares_sock_create_callback callback,526 ares_sock_create_callback callback,
524 void *user_data);527 void *user_data);
@@ -478,8 +478,11 @@ ares_cached_addrinfo_to_ares_addrinfo(const ares_cached_addrinfo cached_addrinfo
478}478}
479 479
480struct ares_addrinfo *480struct ares_addrinfo *
481-ares_get_dns_cache(const char *host, const char *service, const struct ares_addrinfo_hints *hints) {481+#ifdef HAS_NETMANAGER_BASE
482- ares_cache_key_param_wrapper param = {0};482+ ares_get_dns_cache(const char *host, const char *service, const struct ares_addrinfo_hints *hints, int32_t netId) {
483+#else
484+ ares_get_dns_cache(const char *host, const char *service, const struct ares_addrinfo_hints *hints) {
485+#endif
483 param.host = (char *) host;486 param.host = (char *) host;
484 param.serv = (char *) service;487 param.serv = (char *) service;
485 struct addrinfo hint = {0};488 struct addrinfo hint = {0};
@@ -496,7 +499,11 @@ ares_get_dns_cache(const char *host, const char *service, const struct ares_addr
496}499}
497 500
498void ares_set_dns_cache(const char *host, const char *service, const struct ares_addrinfo_hints *hints,501void ares_set_dns_cache(const char *host, const char *service, const struct ares_addrinfo_hints *hints,
502+#ifdef HAS_NETMANAGER_BASE
503+ const struct ares_addrinfo *res, int32_t netId) {
504+#else
499 const struct ares_addrinfo *res) {505 const struct ares_addrinfo *res) {
506+#endif
500 ares_cache_key_param_wrapper param = {0};507 ares_cache_key_param_wrapper param = {0};
501 param.host = (char *) host;508 param.host = (char *) host;
502 param.serv = (char *) service;509 param.serv = (char *) service;
@@ -775,7 +782,11 @@ static void end_hquery(struct host_query *hquery, ares_status_t status)
775#if OHOS_DNS_PROXY_BY_NETSYS782#if OHOS_DNS_PROXY_BY_NETSYS
776 char serv[12] = {0};783 char serv[12] = {0};
777 sprintf(serv, "%d", hquery->port);784 sprintf(serv, "%d", hquery->port);
785+#ifdef HAS_NETMANAGER_BASE
786+ ares_set_dns_cache(hquery->name, serv, &hquery->hints, hquery->ai, hquery->channel->netId);
787+#else
778 ares_set_dns_cache(hquery->name, serv, &hquery->hints, hquery->ai);788 ares_set_dns_cache(hquery->name, serv, &hquery->hints, hquery->ai);
789+#endif
779 hquery->process_info.hostname = hquery->name;790 hquery->process_info.hostname = hquery->name;
780 hquery->process_info.retCode = status;791 hquery->process_info.retCode = status;
781 int allDuration = ares_get_now_time() - hquery->process_info.queryTime;792 int allDuration = ares_get_now_time() - hquery->process_info.queryTime;
@@ -1026,7 +1037,11 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
1026{1037{
1027#if OHOS_DNS_PROXY_BY_NETSYS1038#if OHOS_DNS_PROXY_BY_NETSYS
1028 long long time_now = ares_get_now_time();1039 long long time_now = ares_get_now_time();
1040+#ifdef HAS_NETMANAGER_BASE
1041+ struct ares_addrinfo *cache_res = ares_get_dns_cache(name, service, hints, channel->netId);
1042+#else
1029 struct ares_addrinfo *cache_res = ares_get_dns_cache(name, service, hints);1043 struct ares_addrinfo *cache_res = ares_get_dns_cache(name, service, hints);
1044+#endif
1030 if (cache_res && cache_res->nodes) {1045 if (cache_res && cache_res->nodes) {
1031 ares_record_process(ARES_SUCCESS, name, time_now, cache_res, NULL);1046 ares_record_process(ARES_SUCCESS, name, time_now, cache_res, NULL);
1032 callback(arg, ARES_SUCCESS, 0, cache_res);1047 callback(arg, ARES_SUCCESS, 0, cache_res);
@@ -498,6 +498,9 @@ int ares_dup(ares_channel_t **dest, const ares_channel_t *src)
498 (*dest)->legacy_sock_funcs_cb_data = src->legacy_sock_funcs_cb_data;498 (*dest)->legacy_sock_funcs_cb_data = src->legacy_sock_funcs_cb_data;
499 (*dest)->server_state_cb = src->server_state_cb;499 (*dest)->server_state_cb = src->server_state_cb;
500 (*dest)->server_state_cb_data = src->server_state_cb_data;500 (*dest)->server_state_cb_data = src->server_state_cb_data;
501+#ifdef HAS_NETMANAGER_BASE
502+ (*dest)->netId = src->netId;
503+#endif
501 504 
502 ares_strcpy((*dest)->local_dev_name, src->local_dev_name,505 ares_strcpy((*dest)->local_dev_name, src->local_dev_name,
503 sizeof((*dest)->local_dev_name));506 sizeof((*dest)->local_dev_name));
@@ -577,6 +580,18 @@ void ares_set_local_dev(ares_channel_t *channel, const char *local_dev_name)
577 ares_channel_unlock(channel);580 ares_channel_unlock(channel);
578}581}
579 582 
583+#ifdef HAS_NETMANAGER_BASE
584+void ares_set_dns_netid(ares_channel_t *channel, int32_t netId)
585+{
586+ if (channel == NULL) {
587+ return;
588+ }
589+ ares_channel_lock(channel);
590+ channel->netId = netId;
591+ ares_channel_unlock(channel);
592+}
593+#endif
594+ 
580int ares_set_sortlist(ares_channel_t *channel, const char *sortstr)595int ares_set_sortlist(ares_channel_t *channel, const char *sortstr)
581{596{
582 size_t nsort = 0;597 size_t nsort = 0;
@@ -222,6 +222,7 @@ struct ares_channeldata {
222 char local_dev_name[32];222 char local_dev_name[32];
223 unsigned int local_ip4;223 unsigned int local_ip4;
224 unsigned char local_ip6[16];224 unsigned char local_ip6[16];
225+ int32_t netId;
225 226 
226 /* Thread safety lock */227 /* Thread safety lock */
227 ares_thread_mutex_t *lock;228 ares_thread_mutex_t *lock;
@@ -76,7 +76,11 @@ static ares_status_t ares_init_sysconfig_netsys(const ares_channel_t *channel,
76{76{
77 struct resolv_config config = {0};77 struct resolv_config config = {0};
78 int ret = 0;78 int ret = 0;
79+#ifdef HAS_NETMANAGER_BASE
80+ int netid = channel->netId;
81+#else
79 int netid = 0;82 int netid = 0;
83+#endif
80 ares_status_t status = ARES_EFILE;84 ares_status_t status = ARES_EFILE;
81 85
82 ret = NetSysGetResolvConfExt(netid, &config);86 ret = NetSysGetResolvConfExt(netid, &config);