tlv: Fix recursive initialization from_dict()

When calling from_dict() on a hierarchy of nested BER_TLV_IE,
only the first/outer layer of TLV_IE_Collection would get its
'decoded' initialized correctly from the dict.  Subsequent layers
were not, as the 'decoded=' was passed as parameter during instance
initialization.  If we first instantiate the class and then call the
from_dict() method, the recursive initialization down the full hierarchy
works as expected.

Change-Id: I795a33ed8dfa8454dc9079c189ab7b2ba64a3b72
This commit is contained in:
Harald Welte 2021-10-21 11:33:44 +02:00
parent 04c1302b68
commit 5895380a45
1 changed files with 2 additions and 1 deletions

View File

@ -373,7 +373,8 @@ class TLV_IE_Collection(metaclass=TlvCollectionMeta):
for k in i.keys():
if k in self.members_by_name:
cls = self.members_by_name[k]
inst = cls(decoded=i[k])
inst = cls()
inst.from_dict(i[k])
res.append(inst)
else:
raise ValueError('%s: Unknown TLV Class %s in %s; expected %s' %