diff --git a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp index e76663c7f98ff1f12a3373d282bf5f34b070b2c1..c6a2e559d90c6ae72bde92eff27ef4351d0730f7 100644 --- a/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp +++ b/frameworks/js/napi/connection/connection_exec/src/connection_exec.cpp @@ -1149,11 +1149,6 @@ napi_value ConnectionExec::GetProxyModeCallback(ProxyModeContext *context) bool ConnectionExec::ExecSetPacFileUrl(SetPacFileUrlContext *context) { - if (context->pacUrl_.empty()) { - NETMANAGER_BASE_LOGE("pac Url is empty!"); - context->SetErrorCode(NETMANAGER_ERR_PARAMETER_ERROR); - return false; - } int32_t errorCode = NetConnClient::GetInstance().SetPacFileUrl(context->pacUrl_); if (errorCode != NET_CONN_SUCCESS) { NETMANAGER_BASE_LOGE("exec SetPacFileUrl failed errorCode: %{public}d", errorCode); diff --git a/netmanager_base_config.gni b/netmanager_base_config.gni index 9e391aac406f4c128f6e65aeb2d15b712718dc40..08d6cae876332a64022a36fbc40021969ef77194 100644 --- a/netmanager_base_config.gni +++ b/netmanager_base_config.gni @@ -58,7 +58,7 @@ declare_args() { netmanager_base_support_ebpf_memory_miniaturization = false netmanager_base_enable_traffic_statistic = false netmanager_base_extended_features = true - netmanager_base_enable_pac_proxy = false + netmanager_base_enable_pac_proxy = true netmanager_base_share_traffic_limit_enable = false netmanager_base_enable_set_app_frozened = false netmanager_base_feature_enterprise_route_custom = false diff --git a/services/netconnmanager/include/net_pac_manager.h b/services/netconnmanager/include/net_pac_manager.h index 5371ff77a2a65ae56c1053086512d68cb32c3464..1140e04ab21d380e16155aad946abd336d342474 100644 --- a/services/netconnmanager/include/net_pac_manager.h +++ b/services/netconnmanager/include/net_pac_manager.h @@ -62,7 +62,7 @@ public: PAC_STATUS FindProxyForURL(const std::string &url, const std::string &host, std::string &proxy); - std::string DownloadPACScript(const std::string &url); + void DownloadPACScript(const std::string &url); std::string ParseHost(const std::string &url); diff --git a/services/netconnmanager/src/net_pac_manager.cpp b/services/netconnmanager/src/net_pac_manager.cpp index 2431e110e05b8875024ebfed16bc5b071465977c..c97e066697ebdd07fda1a51733c3310b0fb9b4d1 100644 --- a/services/netconnmanager/src/net_pac_manager.cpp +++ b/services/netconnmanager/src/net_pac_manager.cpp @@ -34,6 +34,8 @@ const std::string EMPTY = ""; constexpr int32_t HTTP_CODE_200 = 200; } // namespace +static std::string g_script; + NetPACManager::NetPACManager() : pacScriptVal_(jerry_create_undefined()), status_(false), engineInitialized_(false) { } @@ -91,12 +93,13 @@ bool NetPACManager::InitPACScriptWithURL(const std::string &scriptUrl) jerry_cleanup(); engineInitialized_ = false; } - const std::string &script = DownloadPACScript(scriptUrl); - if (script.empty()) { + g_script.clear(); + DownloadPACScript(scriptUrl); + if (g_script.empty()) { status_ = false; return false; } - const char *pac_script = script.c_str(); + const char *pac_script = g_script.c_str(); jerry_init(JERRY_INIT_EMPTY); engineInitialized_ = true; PacFunctions::RegisterPacFunctions(); @@ -181,10 +184,11 @@ static size_t WriteToString(void *contents, size_t size, size_t nmemb, void *use size_t realsize = size * nmemb; std::string *mem = static_cast(userp); mem->append(static_cast(contents), realsize); + g_script.append(static_cast(contents), realsize); return realsize; } -std::string NetPACManager::DownloadPACScript(const std::string &url) +void NetPACManager::DownloadPACScript(const std::string &url) { struct CurlGlobalGuard { CurlGlobalGuard() @@ -198,7 +202,7 @@ std::string NetPACManager::DownloadPACScript(const std::string &url) } curlGuard; CURL *curl_handle = curl_easy_init(); if (!curl_handle) { - return EMPTY; + return; } struct CurlHandleDeleter { void operator()(CURL *handle) @@ -236,6 +240,7 @@ std::string NetPACManager::DownloadPACScript(const std::string &url) return; } + void NetPACManager::SetFileUrl(const std::string &url) { scriptFileUrl_ = url;