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 socket = require("socket")
|
||||||
local logger = require("logger")
|
local logger = require("logger")
|
||||||
|
local _ = require("gettext")
|
||||||
|
local T = require("ffi/util").template
|
||||||
|
|
||||||
-- Reference:
|
-- Reference:
|
||||||
-- https://lunarmodules.github.io/luasocket/tcp.html
|
-- https://lunarmodules.github.io/luasocket/tcp.html
|
||||||
@@ -23,7 +25,11 @@ function SimpleTCPServer:new(o)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function SimpleTCPServer:start()
|
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)
|
self.server:settimeout(0.01) -- set timeout (10ms)
|
||||||
logger.dbg("SimpleTCPServer: Server listening on port " .. self.port)
|
logger.dbg("SimpleTCPServer: Server listening on port " .. self.port)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -100,10 +100,18 @@ function HttpInspector:start()
|
|||||||
port = self.port,
|
port = self.port,
|
||||||
receiveCallback = function(data, id) return self:onRequest(data, id) end,
|
receiveCallback = function(data, id) return self:onRequest(data, id) end,
|
||||||
}
|
}
|
||||||
self.http_socket:start()
|
local ok, err = self.http_socket:start()
|
||||||
|
if ok then
|
||||||
self.http_messagequeue = UIManager:insertZMQ(self.http_socket)
|
self.http_messagequeue = UIManager:insertZMQ(self.http_socket)
|
||||||
|
|
||||||
logger.dbg("HttpInspector: Server listening on port " .. self.port)
|
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
|
end
|
||||||
|
|
||||||
function HttpInspector:stop()
|
function HttpInspector:stop()
|
||||||
|
|||||||
Reference in New Issue
Block a user