Fewer prints. Ignore unknown sessions and failure to decrypt
This commit is contained in:
parent
6b9090e2f4
commit
db186e65a1
5 changed files with 14 additions and 20 deletions
|
|
@ -218,13 +218,18 @@ class CircuitMatter:
|
|||
message.decode(data)
|
||||
message.source_ipaddress = address
|
||||
if message.secure_session:
|
||||
secure_session_context = None
|
||||
if message.session_id < len(self.manager.secure_session_contexts):
|
||||
secure_session_context = self.manager.secure_session_contexts[
|
||||
message.session_id
|
||||
]
|
||||
if secure_session_context is None:
|
||||
print("Failed to find session. Ignoring.")
|
||||
return
|
||||
# Decrypt the payload
|
||||
secure_session_context = self.manager.secure_session_contexts[
|
||||
message.session_id
|
||||
]
|
||||
ok = secure_session_context.decrypt_and_verify(message)
|
||||
if not ok:
|
||||
raise RuntimeError("Failed to decrypt message")
|
||||
if not secure_session_context.decrypt_and_verify(message):
|
||||
print("Failed to decrypt message. Ignoring.")
|
||||
return
|
||||
message.parse_protocol_header()
|
||||
self.manager.mark_duplicate(message)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class StartUpOnOffEnum(data_model.Enum8):
|
|||
class OnOff(data_model.Cluster):
|
||||
CLUSTER_ID = 0x0006
|
||||
|
||||
OnOff = data_model.BoolAttribute(0x0000, default=False)
|
||||
OnOff = data_model.BoolAttribute(0x0000, default=False, N_nonvolatile=True)
|
||||
GlobalSceneControl = data_model.BoolAttribute(0x4000, default=True)
|
||||
OnTime = data_model.NumberAttribute(0x4001, signed=False, bits=16, default=0)
|
||||
OffWaitTime = data_model.NumberAttribute(0x4002, signed=False, bits=16, default=0)
|
||||
|
|
|
|||
|
|
@ -313,7 +313,6 @@ class Cluster:
|
|||
nonvolatile[ATTRIBUTES_KEY] = {}
|
||||
for field_name, descriptor in self._attributes():
|
||||
if descriptor.nonvolatile:
|
||||
print(field_name, nonvolatile[ATTRIBUTES_KEY])
|
||||
if hex(descriptor.id) in nonvolatile[ATTRIBUTES_KEY]:
|
||||
# Update our live value
|
||||
self._attribute_values[descriptor.id] = descriptor.from_json(
|
||||
|
|
|
|||
|
|
@ -107,12 +107,10 @@ class Exchange:
|
|||
):
|
||||
# Drop messages that have the wrong acknowledgement counter.
|
||||
return True
|
||||
print("acknowledged", message.acknowledged_message_counter)
|
||||
self.pending_retransmission = None
|
||||
self.next_retransmission_time = None
|
||||
|
||||
if message.protocol_id not in self.protocols:
|
||||
print("protocol mismatch")
|
||||
# Drop messages that don't match the protocols we're waiting for.
|
||||
return True
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ class PersistentDictionary:
|
|||
self.persisted = {}
|
||||
self._state: dict
|
||||
if self.root is None and filename:
|
||||
self.rollback()
|
||||
with open(self.filename, "r") as state_file:
|
||||
self._state = json.load(state_file)
|
||||
elif state is not None:
|
||||
self._state = state
|
||||
else:
|
||||
|
|
@ -51,19 +52,10 @@ class PersistentDictionary:
|
|||
|
||||
def commit(self):
|
||||
if not self.dirty:
|
||||
print("not dirty")
|
||||
return
|
||||
if self.root:
|
||||
print("root commit")
|
||||
self.root.commit()
|
||||
return
|
||||
print("commit")
|
||||
print(self._state)
|
||||
with open(self.filename, "w") as state_file:
|
||||
json.dump(self._state, state_file, indent=1)
|
||||
self.dirty = False
|
||||
|
||||
def rollback(self):
|
||||
print("rollback")
|
||||
with open(self.filename, "r") as state_file:
|
||||
self._state = json.load(state_file)
|
||||
|
|
|
|||
Loading…
Reference in a new issue