Compare commits

..

8 Commits

Author SHA1 Message Date
5062c9dd15 Trying again 2026-04-20 12:20:25 -04:00
f844be04b0 make_unimplemented_handler 2026-04-20 12:13:51 -04:00
eb8fff42bf One more 2026-04-20 12:08:30 -04:00
d94c1342b0 Additional bug fixes 2026-04-20 12:02:12 -04:00
cb4945d469 Extra checks 2026-04-20 11:50:11 -04:00
5bbb2e6afa syntax 2026-04-20 11:11:30 -04:00
5756d8ba39 Close parenthases 2026-04-20 10:44:01 -04:00
9e95b1fd78 Handle nil value in client _sync 2026-04-20 10:35:36 -04:00
2 changed files with 16 additions and 11 deletions

View File

@@ -88,7 +88,7 @@ function API:sync(options)
filter = options.filter, filter = options.filter,
since = options.since, since = options.since,
full_state = options.full or false, full_state = options.full or false,
set_presence = online and nil or "offline", set_presence = options.online and nil or "offline",
timeout = options.timeout, timeout = options.timeout,
} }
end end

View File

@@ -228,6 +228,7 @@ function Room:get_alias_or_id()
end end
end end
local make_unimplemented_handler
local make_unimplemented_handler = function (self, event) local make_unimplemented_handler = function (self, event)
local env_value = os.getenv("MATRIX_CLIENT_LOG_UNHANDLED_EVENTS") local env_value = os.getenv("MATRIX_CLIENT_LOG_UNHANDLED_EVENTS")
if env_value and #env_value > 0 and env_value ~= "0" then if env_value and #env_value > 0 and env_value ~= "0" then
@@ -445,16 +446,20 @@ function Client:_sync(options)
for _, kind in ipairs { "join", "invite", "leave" } do for _, kind in ipairs { "join", "invite", "leave" } do
local handle = self["_sync_handle_room__" .. kind] local handle = self["_sync_handle_room__" .. kind]
for room_id, room_data in pairs(response.rooms[kind]) do if response.rooms == nil or response.rooms[kind] == nil then
self._log("sync: %s %s", kind, room_id) self._log("sync: Error syncing rooms (nil value)")
-- XXX: Maybe this is abusing pcall() too much to allow handler else
-- code to bail and continue with the next room instead of for room_id, room_data in pairs(response.rooms[kind]) do
-- completely failing to sync. Dunno. self._log("sync: %s %s", kind, room_id)
local ok, err = xpcall(handle, xpcall_add_traceback, self, room_id, room_data) -- XXX: Maybe this is abusing pcall() too much to allow handler
if not ok then -- code to bail and continue with the next room instead of
self._log("sync: Error handling '%s' event for room %s:\n%s", kind, room_id, err) -- completely failing to sync. Dunno.
self._log("sync: Event payload: %s", json.encode(room_data)) local ok, err = xpcall(handle, xpcall_add_traceback, self, room_id, room_data)
end if not ok then
self._log("sync: Error handling '%s' event for room %s:\n%s", kind, room_id, err)
self._log("sync: Event payload: %s", json.encode(room_data))
end
end
end end
end end
end end