@@ -56,6 +56,7 @@ class EncryptionManager:
5656 key_sharing_enabled : bool
5757 appservice_mode : bool
5858 periodically_delete_expired_keys : bool
59+ delete_outdated_inbound : bool
5960
6061 bridge : br .Bridge
6162 az : AppService
@@ -113,6 +114,7 @@ def __init__(
113114 self .az .to_device_handler = self .crypto .handle_as_to_device_event
114115
115116 self .periodically_delete_expired_keys = False
117+ self .delete_outdated_inbound = False
116118 self ._key_delete_task = None
117119 del_cfg = bridge .config ["bridge.encryption.delete_keys" ]
118120 if del_cfg :
@@ -123,6 +125,7 @@ def __init__(
123125 self .crypto .delete_fully_used_keys_on_decrypt = del_cfg ["delete_fully_used_on_decrypt" ]
124126 self .crypto .delete_keys_on_device_delete = del_cfg ["delete_on_device_delete" ]
125127 self .periodically_delete_expired_keys = del_cfg ["periodically_delete_expired" ]
128+ self .delete_outdated_inbound = del_cfg ["delete_outdated_inbound" ]
126129 self .crypto .disable_device_change_key_rotation = bridge .config [
127130 "bridge.encryption.rotation.disable_device_change_key_rotation"
128131 ]
@@ -279,6 +282,12 @@ async def start(self) -> None:
279282 else :
280283 _ = self .client .start (self ._filter )
281284 self .log .info ("End-to-bridge encryption support is enabled (sync mode)" )
285+ if self .delete_outdated_inbound :
286+ deleted = await self .crypto_store .redact_outdated_group_sessions ()
287+ if len (deleted ) > 0 :
288+ self .log .debug (
289+ f"Deleted { len (deleted )} inbound keys which lacked expiration metadata"
290+ )
282291 if self .periodically_delete_expired_keys :
283292 self ._key_delete_task = background_task .create (self ._periodically_delete_keys ())
284293 background_task .create (self ._resync_encryption_info ())
0 commit comments