aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladislav Grishenko <themiron@yandex-team.ru>2021-10-29 20:40:52 +0500
committerDamjan Marion <dmarion@0xa5.net>2025-03-04 10:04:14 +0000
commit75b66b374067ddfc4d9ed316d66250c4e60db985 (patch)
treee3acc58a9734ddd904bf2e43dc1a2b90bb12256b
parent86abfc3e0aee3a1a1ae9107d03d98bf1cdcedd33 (diff)
papi: fix socket api max message id calculation
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 <themiron@yandex-team.ru> Change-Id: Ib777db9dabc3a5a3ff83f07ec211cf2fb3c15cf0 Signed-off-by: Ole Troan <otroan@employees.org>
-rw-r--r--src/vpp-api/python/vpp_papi/vpp_papi_async.py3
-rw-r--r--src/vpp-api/python/vpp_papi/vpp_transport_socket.py3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/vpp-api/python/vpp_papi/vpp_papi_async.py b/src/vpp-api/python/vpp_papi/vpp_papi_async.py
index d9a4fabb69e..44e2a78eeea 100644
--- a/src/vpp-api/python/vpp_papi/vpp_papi_async.py
+++ b/src/vpp-api/python/vpp_papi/vpp_papi_async.py
@@ -451,7 +451,8 @@ class VPPApiClient:
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 = {}
diff --git a/src/vpp-api/python/vpp_papi/vpp_transport_socket.py b/src/vpp-api/python/vpp_papi/vpp_transport_socket.py
index 174ab74d0b8..1ba365ad6e1 100644
--- a/src/vpp-api/python/vpp_papi/vpp_transport_socket.py
+++ b/src/vpp-api/python/vpp_papi/vpp_transport_socket.py
@@ -177,7 +177,8 @@ class VppTransport:
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."""