From 55e36e1d72d08aa1fe5fcf83ade3101993e7f3df Mon Sep 17 00:00:00 2001 From: Wires77 Date: Wed, 10 Sep 2025 00:13:41 -0500 Subject: [PATCH 1/3] Fix various issues with subscript errors --- src/Classes/ImportTab.lua | 6 +++--- src/Launch.lua | 10 +++++++--- src/LaunchServer.lua | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Classes/ImportTab.lua b/src/Classes/ImportTab.lua index 5ddf54eab8..860135c459 100644 --- a/src/Classes/ImportTab.lua +++ b/src/Classes/ImportTab.lua @@ -160,11 +160,11 @@ local ImportTabClass = newClass("ImportTab", "ControlHost", "Control", function( self.controls.exportFrom:SelByValue(self.exportWebsiteSelected or main.lastExportWebsite or "Pastebin", "id") self.controls.generateCodeByLink = new("ButtonControl", { "LEFT", self.controls.exportFrom, "RIGHT"}, {8, 0, 100, 20}, "Share", function() local exportWebsite = exportWebsitesList[self.controls.exportFrom.selIndex] - local response = buildSites.UploadBuild(self.controls.generateCodeOut.buf, exportWebsite) - if response then + local subScriptId = buildSites.UploadBuild(self.controls.generateCodeOut.buf, exportWebsite) + if subScriptId then self.controls.generateCodeOut:SetText("") self.controls.generateCodeByLink.label = "Creating link..." - launch:RegisterSubScript(response, function(pasteLink, errMsg) + launch:RegisterSubScript(subScriptId, function(pasteLink, errMsg) self.controls.generateCodeByLink.label = "Share" if errMsg then main:OpenMessagePopup(exportWebsite.id, "Error creating link:\n"..errMsg) diff --git a/src/Launch.lua b/src/Launch.lua index 674e1d85d9..a345cf9764 100644 --- a/src/Launch.lua +++ b/src/Launch.lua @@ -299,14 +299,18 @@ function launch:DownloadPage(url, callback, params) errMsg = "No data returned" end ConPrintf("Download complete. Status: %s", errMsg or "OK") - return responseHeader, responseBody, errMsg + return {responseHeader, responseBody}, errMsg ]] local id = LaunchSubScript(script, "", "ConPrintf", url, params.header, params.body, self.connectionProtocol, self.proxyURL) if id then self.subScripts[id] = { type = "DOWNLOAD", - callback = function(responseHeader, responseBody, errMsg) - callback({header=responseHeader, body=responseBody}, errMsg) + callback = function(response, errMsg) + if response then + callback({header=response[1], body=response[2]}, errMsg) + else + callback({}, errMsg) + end end } end diff --git a/src/LaunchServer.lua b/src/LaunchServer.lua index f5413c6fc5..8a9b6aa6f8 100644 --- a/src/LaunchServer.lua +++ b/src/LaunchServer.lua @@ -197,4 +197,4 @@ while (os.time() < stopAt) and shouldRetry do attempt = attempt + 1 end server:close() -return code, state, port +return {code, state, port} From c82fad06bc53b08c473e71c80614f828203ac807 Mon Sep 17 00:00:00 2001 From: Wires77 Date: Wed, 10 Sep 2025 00:18:45 -0500 Subject: [PATCH 2/3] Missed PoEAPI change --- src/Classes/PoEAPI.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Classes/PoEAPI.lua b/src/Classes/PoEAPI.lua index fe68f4b9af..46f94d66cf 100644 --- a/src/Classes/PoEAPI.lua +++ b/src/Classes/PoEAPI.lua @@ -80,9 +80,10 @@ function PoEAPIClass:FetchAuthToken(callback) if id then launch.subScripts[id] = { type = "DOWNLOAD", - callback = function(code, state, port) + callback = function(response, errMsg) + local code, state, port = unpack(response or {}) if not code then - ConPrintf("Failed to get code from server") + ConPrintf("Failed to get code from server: %s", errMsg) self.authToken = nil self.refreshToken = nil self.tokenExpiry = nil From bb86a49f8c966fae227c7efd6a5579ee332a36f3 Mon Sep 17 00:00:00 2001 From: Wires77 Date: Thu, 11 Sep 2025 14:02:16 -0500 Subject: [PATCH 3/3] Fix errors when returning tables from subscripts --- src/Classes/PoEAPI.lua | 3 +-- src/Launch.lua | 10 +++------- src/LaunchServer.lua | 6 +++++- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Classes/PoEAPI.lua b/src/Classes/PoEAPI.lua index 46f94d66cf..8fc90874dd 100644 --- a/src/Classes/PoEAPI.lua +++ b/src/Classes/PoEAPI.lua @@ -80,8 +80,7 @@ function PoEAPIClass:FetchAuthToken(callback) if id then launch.subScripts[id] = { type = "DOWNLOAD", - callback = function(response, errMsg) - local code, state, port = unpack(response or {}) + callback = function(code, errMsg, state, port) if not code then ConPrintf("Failed to get code from server: %s", errMsg) self.authToken = nil diff --git a/src/Launch.lua b/src/Launch.lua index a345cf9764..b43e46bd92 100644 --- a/src/Launch.lua +++ b/src/Launch.lua @@ -299,18 +299,14 @@ function launch:DownloadPage(url, callback, params) errMsg = "No data returned" end ConPrintf("Download complete. Status: %s", errMsg or "OK") - return {responseHeader, responseBody}, errMsg + return responseBody, errMsg, responseHeader ]] local id = LaunchSubScript(script, "", "ConPrintf", url, params.header, params.body, self.connectionProtocol, self.proxyURL) if id then self.subScripts[id] = { type = "DOWNLOAD", - callback = function(response, errMsg) - if response then - callback({header=response[1], body=response[2]}, errMsg) - else - callback({}, errMsg) - end + callback = function(responseBody, errMsg, responseHeader) + callback({header=responseHeader, body=responseBody}, errMsg) end } end diff --git a/src/LaunchServer.lua b/src/LaunchServer.lua index 8a9b6aa6f8..10152a181d 100644 --- a/src/LaunchServer.lua +++ b/src/LaunchServer.lua @@ -177,6 +177,7 @@ end -- IO, so that it can operate concurrently, but hopefully that isn't necessary. local attempt = 1 local stopAt = os.time() + 30 +local errMsg local shouldRetry, code, state = true, nil, nil while (os.time() < stopAt) and shouldRetry do -- `settimeout`` applies only to individual operations, but we're more concerned with not spending more than 30 @@ -197,4 +198,7 @@ while (os.time() < stopAt) and shouldRetry do attempt = attempt + 1 end server:close() -return {code, state, port} +if os.time() >= stopAt then + errMsg = "Timeout reached without a response received by the local server" +end +return code, errMsg, state, port