mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
fix zsync cannot run properly in Kindle due to firewall
This commit is contained in:
@@ -5,6 +5,7 @@ local Event = require("ui/event")
|
||||
local MessageQueue = require("ui/message/messagequeue")
|
||||
|
||||
local dummy = require("ffi/zeromq_h")
|
||||
local czmq = ffi.load("libs/libczmq.so.1")
|
||||
local filemq = ffi.load("libs/libfmq.so.1")
|
||||
|
||||
local FileMessageQueue = MessageQueue:new{
|
||||
@@ -14,11 +15,15 @@ local FileMessageQueue = MessageQueue:new{
|
||||
|
||||
function FileMessageQueue:init()
|
||||
if self.client ~= nil then
|
||||
self.fmq_recv = filemq.fmq_client_recv_nowait
|
||||
self.fmq_recv = filemq.fmq_client_recv
|
||||
self.filemq = self.client
|
||||
self.poller = czmq.zpoller_new(filemq.fmq_client_handle(self.client), nil)
|
||||
elseif self.server ~= nil then
|
||||
self.fmq_recv = filemq.fmq_server_recv_nowait
|
||||
-- TODO: currently fmq_server_recv API is not available
|
||||
--self.fmq_recv = filemq.fmq_server_recv
|
||||
self.filemq = self.server
|
||||
-- TODO: currently fmq_server_handle API is not available
|
||||
--self.poller = czmq.zpoller_new(filemq.fmq_server_handle(self.server), nil)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,13 +36,18 @@ function FileMessageQueue:stop()
|
||||
DEBUG("stop filemq server")
|
||||
filemq.fmq_server_destroy(ffi.new('fmq_server_t *[1]', self.server))
|
||||
end
|
||||
if self.poller ~= nil then
|
||||
czmq.zpoller_destroy(ffi.new('zpoller_t *[1]', self.poller))
|
||||
end
|
||||
end
|
||||
|
||||
function FileMessageQueue:waitEvent()
|
||||
local msg = self.fmq_recv(self.filemq)
|
||||
while msg ~= nil do
|
||||
table.insert(self.messages, msg)
|
||||
msg = self.fmq_recv(self.filemq)
|
||||
if not self.poller then return end
|
||||
if czmq.zpoller_wait(self.poller, 0) ~= nil then
|
||||
local msg = self.fmq_recv(self.filemq)
|
||||
if msg ~= nil then
|
||||
table.insert(self.messages, msg)
|
||||
end
|
||||
end
|
||||
return self:handleZMsgs(self.messages)
|
||||
end
|
||||
|
||||
@@ -67,7 +67,7 @@ function MessageQueue:handleZMsgs(messages)
|
||||
local message_size = czmq.zmsg_size(messages[1])
|
||||
local command = pop_string()
|
||||
DEBUG("ØMQ message", command)
|
||||
if command == "ENTER" and #messages >= 4 then
|
||||
if command == "ENTER" then
|
||||
local id = pop_string()
|
||||
local name = pop_string()
|
||||
local header = pop_header()
|
||||
|
||||
@@ -5,6 +5,7 @@ local Event = require("ui/event")
|
||||
local MessageQueue = require("ui/message/messagequeue")
|
||||
|
||||
local dummy = require("ffi/zeromq_h")
|
||||
local czmq = ffi.load("libs/libczmq.so.1")
|
||||
local zyre = ffi.load("libs/libzyre.so.1")
|
||||
|
||||
local ZyreMessageQueue = MessageQueue:new{
|
||||
@@ -13,12 +14,15 @@ local ZyreMessageQueue = MessageQueue:new{
|
||||
|
||||
function ZyreMessageQueue:start()
|
||||
self.node = zyre.zyre_new()
|
||||
self.poller = czmq.zpoller_new(zyre.zyre_socket(self.node), nil)
|
||||
for key, value in pairs(self.header) do
|
||||
zyre.zyre_set_header(self.node, key, value)
|
||||
end
|
||||
zyre.zyre_set_verbose(self.node)
|
||||
--zyre.zyre_set_verbose(self.node)
|
||||
zyre.zyre_set_interface(self.node, "wlan0")
|
||||
zyre.zyre_start(self.node)
|
||||
zyre.zyre_join(self.node, "GLOBAL")
|
||||
--zyre.zyre_dump(self.node)
|
||||
end
|
||||
|
||||
function ZyreMessageQueue:stop()
|
||||
@@ -27,13 +31,17 @@ function ZyreMessageQueue:stop()
|
||||
zyre.zyre_stop(self.node)
|
||||
zyre.zyre_destroy(ffi.new('zyre_t *[1]', self.node))
|
||||
end
|
||||
if self.poller ~= nil then
|
||||
czmq.zpoller_destroy(ffi.new('zpoller_t *[1]', self.poller))
|
||||
end
|
||||
end
|
||||
|
||||
function ZyreMessageQueue:waitEvent()
|
||||
local msg = zyre.zyre_recv_nowait(self.node)
|
||||
while msg ~= nil do
|
||||
table.insert(self.messages, msg)
|
||||
msg = zyre.zyre_recv_nowait(self.node)
|
||||
if czmq.zpoller_wait(self.poller, 0) ~= nil then
|
||||
local msg = zyre.zyre_recv(self.node)
|
||||
if msg ~= nil then
|
||||
table.insert(self.messages, msg)
|
||||
end
|
||||
end
|
||||
return self:handleZMsgs(self.messages)
|
||||
end
|
||||
|
||||
@@ -317,7 +317,7 @@ function UIManager:run()
|
||||
if #self._zeromqs > 0 then
|
||||
-- pending message queue, wait 100ms for input
|
||||
input_event = Input:waitEvent(1000*100)
|
||||
if input_event and input_event.handler == "onInputError" then
|
||||
if not input_event or input_event.handler == "onInputError" then
|
||||
for _, zeromq in ipairs(self._zeromqs) do
|
||||
input_event = zeromq:waitEvent()
|
||||
if input_event then break end
|
||||
|
||||
@@ -33,6 +33,10 @@ export TESSDATA_PREFIX="data"
|
||||
# export dict directory
|
||||
export STARDICT_DATA_DIR="data/dict"
|
||||
|
||||
# accept input ports for zsync plugin
|
||||
iptables -A INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
|
||||
iptables -A INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT
|
||||
|
||||
# bind-mount system fonts
|
||||
if ! grep /mnt/us/koreader/fonts/host /proc/mounts ; then
|
||||
mount -o bind /usr/java/lib/fonts /mnt/us/koreader/fonts/host
|
||||
|
||||
@@ -10,10 +10,14 @@ export TESSDATA_PREFIX="data"
|
||||
# export dict directory
|
||||
export STARDICT_DATA_DIR="data/dict"
|
||||
|
||||
# accept input ports for zsync plugin
|
||||
iptables -A INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
|
||||
iptables -A INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT
|
||||
|
||||
# exit from nickel
|
||||
killall nickel
|
||||
killall hindenburg
|
||||
|
||||
|
||||
# finally call the launcher
|
||||
./reader.lua /mnt/onboard 2> crash.log
|
||||
|
||||
|
||||
Submodule koreader-base updated: 7108ec4fd1...a276f2fde1
@@ -300,12 +300,14 @@ end
|
||||
|
||||
function ZSync:subscribe()
|
||||
DEBUG("subscribe documents")
|
||||
self.received = {}
|
||||
self.inbox_chooser = InboxChooser:new{zsync = self}
|
||||
UIManager:show(self.inbox_chooser)
|
||||
end
|
||||
|
||||
function ZSync:unsubscribe()
|
||||
DEBUG("ZSync unsubscribe")
|
||||
self.received = {}
|
||||
self:stopFileMQ()
|
||||
self:stopZyreMQ()
|
||||
end
|
||||
@@ -329,10 +331,13 @@ function ZSync:onZyreEnter(id, name, header, endpoint)
|
||||
end
|
||||
|
||||
function ZSync:onFileDeliver(filename, fullname)
|
||||
-- sometimes several FileDelever msgs are sent from filemq
|
||||
if self.received[filename] then return end
|
||||
UIManager:show(InfoMessage:new{
|
||||
text = _("Received file:") .. "\n" .. filename,
|
||||
timeout = 1,
|
||||
})
|
||||
self.received[filename] = true
|
||||
end
|
||||
|
||||
--[[
|
||||
|
||||
Reference in New Issue
Block a user