From 78ffa69e8fa7f2ed8cbbc058ad2e40310925703e Mon Sep 17 00:00:00 2001 From: yefan Date: Mon, 11 May 2026 21:58:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dcurl=E5=9C=A8orign?= =?UTF-8?q?al=E6=83=85=E5=86=B5=E4=B8=8B=E9=80=9A=E4=BF=A1=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=EF=BC=88key=E8=A6=81=E6=9C=89=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=89=8D=E7=BC=80=EF=BC=89=20&&=20=E7=A7=BB=E9=99=A4curl?= =?UTF-8?q?=E7=9A=84bridge=E6=A8=A1=E5=9E=8B=EF=BC=8C=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E8=AF=BB=E5=86=99=E6=9C=AC=E5=9C=B0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MY_!Base/src/lib/Curl.lua | 45 ++++++--------------------------------- 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/MY_!Base/src/lib/Curl.lua b/MY_!Base/src/lib/Curl.lua index 4ff3a5d11..7b95492b4 100644 --- a/MY_!Base/src/lib/Curl.lua +++ b/MY_!Base/src/lib/Curl.lua @@ -29,8 +29,6 @@ local RRWP_FREE = {} local RRWC_FREE = {} local CALL_AJAX = {} local AJAX_TAG = X.NSFormatString('{$NS}_AJAX#') -local AJAX_BRIDGE_WAIT = 10000 -local AJAX_BRIDGE_PATH = X.PACKET_INFO.DATA_ROOT .. '#cache/curl/' local function CreateWebPageFrame() local szRequestID, hFrame @@ -226,8 +224,6 @@ function X.Ajax(settings) X.DEBUG_LEVEL.LOG ) --[[#DEBUG END]] - local bridgewait = GetTime() + AJAX_BRIDGE_WAIT - local bridgewaitkey = X.NSFormatString('{$NS}_AJAX_') .. id local fulfilled = false settings.callback = function(html, status) if fulfilled then @@ -262,42 +258,13 @@ function X.Ajax(settings) else X.SafeCallWithThis(settings.config, onerror, html, status) end - X.XpCall(settings.closebridge) - end - if connected then - resolve() - else - X.DelayCall(bridgewaitkey, bridgewait - GetTime(), resolve) end + resolve() end ------------------------------- -- each driver handlers ------------------------------- - -- bridge - local bridgekey = X.NSFormatString('{$NS}RRDF_TO_') .. id - local bridgein = AJAX_BRIDGE_PATH .. id .. '.' .. X.ENVIRONMENT.GAME_LANG .. '.jx3dat' - local bridgeout = AJAX_BRIDGE_PATH .. id .. '.result.' .. X.ENVIRONMENT.GAME_LANG .. '.jx3dat' - local bridgetimeout = GetTime() + config.timeout - settings.closebridge = function() - CPath.DelFile(bridgein) - CPath.DelFile(bridgeout) - X.DelayCall(bridgewaitkey, false) - X.BreatheCall(bridgekey, false) - X.DelayCall(bridgekey, false) - X.RegisterExit(bridgekey, false) - end - X.SaveLUAData(bridgein, config, { encoder = 'luatext', passphrase = false }) - X.BreatheCall(bridgekey, 200, function() - local data = X.LoadLUAData(bridgeout, { passphrase = false }) - if X.IsTable(data) then - settings.callback(data.content, data.status) - elseif GetTime() > bridgetimeout then - settings.callback() - end - end) - X.DelayCall(bridgekey, config.timeout, settings.closebridge) - X.RegisterExit(bridgekey, settings.closebridge) local canajax, errmsg = X.CanAjax(driver, method) if not canajax then @@ -463,6 +430,7 @@ function X.Ajax(settings) szKey = szKey + 1 end szKey = AJAX_TAG .. szKey + local szRequestKey = '__addon_' .. szKey local ssl = xurl:sub(1, 6) == 'https:' if method == 'post' then local data = xdata @@ -474,9 +442,9 @@ function X.Ajax(settings) data[X.DecodeURIComponent(k)] = X.DecodeURIComponent(v) end end - CURL_HttpPost(szKey, xurl, data or '', ssl, config.timeout) + CURL_HttpPost(szRequestKey, xurl, data or '', ssl, config.timeout) else - CURL_HttpRqst(szKey, xurl, ssl, config.timeout) + CURL_HttpRqst(szRequestKey, xurl, ssl, config.timeout) end local info = { settings = settings, @@ -543,7 +511,8 @@ function X.DownloadFile(szURL, szPath) if CURL_DownloadFile then info.resolve = resolve info.reject = reject - CURL_DownloadFile(szKey, szURL, szPath, szURL:lower():find('^https://') and true or false, 5) + local szDownloadKey = '__addon_' .. szKey + CURL_DownloadFile(szDownloadKey, szURL, szPath, szURL:lower():find('^https://') and true or false, 5) else for _, k in ipairs(info.keys) do PENDING[k] = nil @@ -636,7 +605,7 @@ end function X.EnsureAjax(options) local key = GetStringCRC(X.EncodeLUAData({options.url, options.data})) local configs, i, dc = {{'curl', 'post'}, {'origin', 'post'}, {'origin', 'get'}, {'webcef', 'get'}}, 1, nil - -- 移除无法访问的调用方式,但至少保留一个用于尝试桥接通信 + -- 移除无法访问的调用方式,但至少保留一种驱动用于依次重试 for i, config in X.ipairs_r(configs) do if i >= 1 and not X.CanAjax(config[1], config[2]) then table.remove(configs, i) From 3f4ebebc444e4f10cc1245a0ae5fe25c13645ffd Mon Sep 17 00:00:00 2001 From: yefan Date: Tue, 12 May 2026 14:09:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=9B=9E=E6=BB=9Acurl=E7=9A=84key?= =?UTF-8?q?=E5=89=8D=E7=BC=80=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MY_!Base/src/lib/Curl.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/MY_!Base/src/lib/Curl.lua b/MY_!Base/src/lib/Curl.lua index 7b95492b4..ce32c6870 100644 --- a/MY_!Base/src/lib/Curl.lua +++ b/MY_!Base/src/lib/Curl.lua @@ -430,7 +430,6 @@ function X.Ajax(settings) szKey = szKey + 1 end szKey = AJAX_TAG .. szKey - local szRequestKey = '__addon_' .. szKey local ssl = xurl:sub(1, 6) == 'https:' if method == 'post' then local data = xdata @@ -442,9 +441,9 @@ function X.Ajax(settings) data[X.DecodeURIComponent(k)] = X.DecodeURIComponent(v) end end - CURL_HttpPost(szRequestKey, xurl, data or '', ssl, config.timeout) + CURL_HttpPost(szKey, xurl, data or '', ssl, config.timeout) else - CURL_HttpRqst(szRequestKey, xurl, ssl, config.timeout) + CURL_HttpRqst(szKey, xurl, ssl, config.timeout) end local info = { settings = settings, @@ -511,8 +510,7 @@ function X.DownloadFile(szURL, szPath) if CURL_DownloadFile then info.resolve = resolve info.reject = reject - local szDownloadKey = '__addon_' .. szKey - CURL_DownloadFile(szDownloadKey, szURL, szPath, szURL:lower():find('^https://') and true or false, 5) + CURL_DownloadFile(szKey, szURL, szPath, szURL:lower():find('^https://') and true or false, 5) else for _, k in ipairs(info.keys) do PENDING[k] = nil