mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
[plugin] HttpInspector: avoid crash when port can't be bound (#13421)
See <https://github.com/koreader/koreader/issues/13420#issuecomment-2726311224>.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
local socket = require("socket")
|
||||
local logger = require("logger")
|
||||
local _ = require("gettext")
|
||||
local T = require("ffi/util").template
|
||||
|
||||
-- Reference:
|
||||
-- https://lunarmodules.github.io/luasocket/tcp.html
|
||||
@@ -23,7 +25,11 @@ function SimpleTCPServer:new(o)
|
||||
end
|
||||
|
||||
function SimpleTCPServer:start()
|
||||
self.server = socket.bind(self.host, self.port)
|
||||
local server, err = socket.bind(self.host, self.port)
|
||||
if not server then
|
||||
return false, (err and T(_("Failed to bind socket: %1"), err) or _("Failed to bind socket"))
|
||||
end
|
||||
self.server = server
|
||||
self.server:settimeout(0.01) -- set timeout (10ms)
|
||||
logger.dbg("SimpleTCPServer: Server listening on port " .. self.port)
|
||||
end
|
||||
|
||||
@@ -100,10 +100,18 @@ function HttpInspector:start()
|
||||
port = self.port,
|
||||
receiveCallback = function(data, id) return self:onRequest(data, id) end,
|
||||
}
|
||||
self.http_socket:start()
|
||||
self.http_messagequeue = UIManager:insertZMQ(self.http_socket)
|
||||
|
||||
logger.dbg("HttpInspector: Server listening on port " .. self.port)
|
||||
local ok, err = self.http_socket:start()
|
||||
if ok then
|
||||
self.http_messagequeue = UIManager:insertZMQ(self.http_socket)
|
||||
logger.dbg("HttpInspector: Server listening on port " .. self.port)
|
||||
else
|
||||
logger.err("HttpInspector: Failed to start server:", err)
|
||||
self.http_socket = nil
|
||||
local InfoMessage = require("ui/widget/infomessage")
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = T(_("Failed to start HTTP inspector on port %1."), self.port) .. "\n\n" .. err,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
function HttpInspector:stop()
|
||||
|
||||
Reference in New Issue
Block a user