From 0dfcf0e6ab1b1103f543bfb3c9000ea5d53ab7af Mon Sep 17 00:00:00 2001 From: Victor-Mo <56435760+Victor-Mo@users.noreply.github.com> Date: Fri, 4 Aug 2023 10:14:01 +0200 Subject: [PATCH] When parsing EK JSON message that contains multiple layers of the same type, for example an RTCP packet with multiple RTCP sections. The 'rtcp' section will contain a list of rtcp sections. This has to be added as separate layers. --- src/pyshark/tshark/output_parser/tshark_ek.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pyshark/tshark/output_parser/tshark_ek.py b/src/pyshark/tshark/output_parser/tshark_ek.py index 5b6aeef5..e68dad75 100644 --- a/src/pyshark/tshark/output_parser/tshark_ek.py +++ b/src/pyshark/tshark/output_parser/tshark_ek.py @@ -47,7 +47,11 @@ def packet_from_ek_packet(json_pkt): for layer in frame_dict['frame_frame_protocols'].split(':'): layer_dict = pkt_dict['layers'].pop(layer, None) if layer_dict is not None: - layers.append(EkLayer(layer, layer_dict)) + if isinstance(layer_dict, list): + for layer_dict_from_list in layer_dict: + layers.append(EkLayer(layer, layer_dict_from_list)) + else: + layers.append(EkLayer(layer, layer_dict)) # Add all leftovers for name, layer in pkt_dict['layers'].items(): layers.append(EkLayer(name, layer))