summaryrefslogtreecommitdiff
path: root/xmake/modules/private/service/server.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-07-05 23:14:22 +0800
committerruki <[email protected]>2022-07-05 23:14:22 +0800
commit7b87fb6a25edcf3cf3bef9b6d8f6098249f24fa3 (patch)
treea9c0c50cf981d01edef60c3e2e24a3330b4d035b /xmake/modules/private/service/server.lua
parentc94c4d9aa8fe72a25358e89fa608f3457e9ee1f7 (diff)
fix recv timeout
Diffstat (limited to 'xmake/modules/private/service/server.lua')
-rw-r--r--xmake/modules/private/service/server.lua19
1 files changed, 17 insertions, 2 deletions
diff --git a/xmake/modules/private/service/server.lua b/xmake/modules/private/service/server.lua
index 4b40373ff..4dcbbf4ec 100644
--- a/xmake/modules/private/service/server.lua
+++ b/xmake/modules/private/service/server.lua
@@ -191,9 +191,24 @@ function server:_handle_session(sock)
print("%s: %s: session connected", self, sock)
local stream = socket_stream(sock, {timeout = self:timeout()})
while true do
- local msg = stream:recv_object()
+ local msg = stream:recv_object({timeout = -1})
if msg then
- self:_HANDLER(stream, message(msg))
+ local ok = try
+ {
+ function ()
+ self:_HANDLER(stream, message(msg))
+ return true
+ end,
+ catch
+ {
+ function (errors)
+ vprint(errors)
+ end
+ }
+ }
+ if not ok then
+ break
+ end
else
break
end