In case of sparse message ids due fixed offsets, length of
the message table is less than max message id, causing
"IndexError: list assignment index out of range" exception
in _register_function() due "self.id_msgdef[i] = msg".
Unlike shmem api, socket api needs to use max id.
Type: fix
Signed-off-by: Vladislav Grishenko <[email protected]>
Change-Id: Ib777db9dabc3a5a3ff83f07ec211cf2fb3c15cf0
Signed-off-by: Ole Troan <[email protected]>
for m in r.message_table:
n = m.name
self.message_table[n] = m.index
- self.vpp_dictionary_maxid = len(self.message_table)
+ # Find the maximum index of the message table
+ self.vpp_dictionary_maxid = max(self.message_table.values() or [0])
# self.worker_task = asyncio.create_task(self.message_handler(event_queue))
requests = {}
return 0
def msg_table_max_index(self):
- return len(self.message_table)
+ """Return the maximum index of the message table."""
+ return max(self.message_table.values() or [0])
def write(self, buf):
"""Send a binary-packed message to VPP."""