Просмотр исходного кода

fix:socket在dns返回多个结果时,只尝试了第一个

alienwalker 2 лет назад
Родитель
Сommit
e25cb5e10f
1 измененных файлов с 14 добавлено и 2 удалено
  1. 14 2
      components/network/adapter/luat_network_adapter.c

+ 14 - 2
components/network/adapter/luat_network_adapter.c

@@ -421,7 +421,19 @@ static int network_base_connect(network_ctrl_t *ctrl, luat_ip_addr_t *remote_ip)
 	network_adapter_t *adapter = &prv_adapter_table[ctrl->adapter_index];
 	if (ctrl->socket_id >= 0)
 	{
-		network_force_close_socket(ctrl);
+	#ifdef LUAT_USE_TLS
+		if (ctrl->tls_mode)
+		{
+			mbedtls_ssl_free(ctrl->ssl);
+		}
+	#endif
+		if (network_socket_close(ctrl))
+		{
+			network_clean_invaild_socket(ctrl->adapter_index);
+			network_socket_force_close(ctrl);
+		}
+		ctrl->need_close = 0;
+		ctrl->socket_id = -1;
 	}
 	if (remote_ip)
 	{
@@ -667,7 +679,7 @@ static int network_state_connecting(network_ctrl_t *ctrl, OS_EVENT *event, netwo
 		{
 			return -1;
 		}
-		DBG("dns ip %d no connect!", ctrl->dns_ip_cnt);
+		DBG("dns ip %d no connect!,%d", ctrl->dns_ip_cnt, ctrl->dns_ip_nums);
 		ctrl->dns_ip_cnt++;
 		if (ctrl->dns_ip_cnt >= ctrl->dns_ip_nums)
 		{