fix(e2ee): extend key rotation wait to 10s, debug late key events
EC rotates encryption key when bot joins LiveKit room. The rotated key arrives via Matrix sync 3-5s later. Previous 2s wait was too short - DEC_FAILED before new key arrived. Extended wait to 10s. Added logging to bot.py to trace why late key events were not being processed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
16
bot.py
16
bot.py
@@ -376,17 +376,25 @@ class Bot:
|
||||
if event.sender == BOT_USER:
|
||||
return # ignore our own key events
|
||||
room_id = room.room_id
|
||||
logger.info("Got encryption_keys timeline event from %s in %s", event.sender, room_id)
|
||||
content = event.source.get("content", {})
|
||||
device_id = content.get("device_id", "")
|
||||
keys_list = content.get("keys", [])
|
||||
logger.info("Got encryption_keys timeline event from %s in %s (device=%s, keys=%d, content_keys=%s)",
|
||||
event.sender, room_id, device_id, len(keys_list), list(content.keys()))
|
||||
vs = self.voice_sessions.get(room_id)
|
||||
if vs:
|
||||
content = event.source.get("content", {})
|
||||
device_id = content.get("device_id", "")
|
||||
for k in content.get("keys", []):
|
||||
for k in keys_list:
|
||||
if "key" in k and "index" in k:
|
||||
key_b64 = k["key"]
|
||||
key_b64 += "=" * (-len(key_b64) % 4)
|
||||
key_bytes = base64.urlsafe_b64decode(key_b64)
|
||||
vs.on_encryption_key(event.sender, device_id, key_bytes, k["index"])
|
||||
else:
|
||||
logger.warning("encryption_keys event missing key/index: %s", k)
|
||||
if not keys_list:
|
||||
logger.warning("encryption_keys event has empty keys list, full content: %s", content)
|
||||
else:
|
||||
logger.warning("No voice session for room %s to deliver encryption key", room_id)
|
||||
return
|
||||
|
||||
if event.type != CALL_MEMBER_TYPE:
|
||||
|
||||
Reference in New Issue
Block a user