Skip to content

Commit

Permalink
Merge pull request #837 from saurtron/fix-unsafe-socket-usage-fixed
Browse files Browse the repository at this point in the history
Fix unsafe socket usage (v2)
  • Loading branch information
AntlerForce authored Dec 9, 2024
2 parents 5cd4022 + c5d87c1 commit 32efee5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
14 changes: 10 additions & 4 deletions LuaMenu/widgets/api_analytics.lua
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ local infologDirectory = "log/"
function SendBARAnalytics(cmdName,args,isEvent)
if PRINT_DEBUG then Spring.Log("Chobby", LOG.WARNING, "Analytics Event", cmdName, args, isEvent, client, "C/A",isConnected, ACTIVE) end

if client == nil then
if not isConnected and client == nil then
return
end
cmdName = string.gsub(cmdName, " ", "_") -- remove spaces from event names
Expand Down Expand Up @@ -139,11 +139,16 @@ end


local function SocketConnect(host, port)
if client then
client:close()
end
client=socket.tcp()
client:settimeout(0)
res, err = client:connect(host, port)
if not res and not res=="timeout" then
if not res and err ~= "timeout" then
if PRINT_DEBUG then Spring.Echo("Error in connection to Analytics server: "..err) end
client:close()
client = nil
return false
end
if PRINT_DEBUG then Spring.Echo("Analytics connected") end
Expand Down Expand Up @@ -652,8 +657,8 @@ local function LobbyInfo()
local message = "c.telemetry.log_client_event lobby:info " .. Spring.Utilities.Base64Encode(Spring.Utilities.json.encode(t)).." ".. machineHash .. "\n"
local client=socket.tcp()
local res, err = client:connect(host, port)
if not res and not res=="timeout" then Spring.Echo("Lobby:Info Error", res, err) else client:send(message) end
if client ~= nil then client:close() end
if not res and err ~= "timeout" then Spring.Echo("Lobby:Info Error", res, err) else client:send(message) end
client:close()
end
end

Expand Down Expand Up @@ -735,6 +740,7 @@ function widget:Initialize()
isConnected = true
if client ~= nil then
client:close()
client = nil
end
ACTIVE = false
-- disconnect
Expand Down
1 change: 1 addition & 0 deletions libs/liblobby/lobby/interface_shared.lua
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ function Interface:Disconnect(reason)
self.finishedConnecting = false
if self.client then
self.client:close()
self.client = nil
end
self:_OnDisconnected(reason, true)
end
Expand Down
7 changes: 6 additions & 1 deletion libs/spring-launcher/luaui/widgets/api_spring_launcher.lua
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,15 @@ local function explode(div,str)
end

function widget:SocketConnect()
if client then
client:close()
end
client = socket.tcp()
client:settimeout(0)
local res, err = client:connect(host, port)
if not res and not res == "timeout" then
if not res and err ~= "timeout" then
client:close()
client = nil
widgetHandler:RemoveWidget(self)
Spring.Log(LOG_SECTION, LOG.ERROR, "Error in connect launcher: " .. err)
return false
Expand Down

0 comments on commit 32efee5

Please sign in to comment.