<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11929">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Pau Espin Pedrol: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ctrl: add function to skip TRAP messages<br><br>This allows to easy skip TRAP messages when we do not want to process<br>them (for example when waiting for REPLY to a single command). Update<br>documentation and version accordingly.<br><br>Change-Id: I51ce207c19a1ca96c3e2af7d5efd64f79b02fbb4<br>---<br>M osmopy/osmo_ipa.py<br>1 file changed, 17 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/osmopy/osmo_ipa.py b/osmopy/osmo_ipa.py</span><br><span>index c371023..f957f41 100755</span><br><span>--- a/osmopy/osmo_ipa.py</span><br><span>+++ b/osmopy/osmo_ipa.py</span><br><span>@@ -2,7 +2,7 @@</span><br><span> # -*- mode: python-mode; py-indent-tabs-mode: nil -*-</span><br><span> """</span><br><span> /*</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2016 sysmocom s.f.m.c. GmbH</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright (C) 2016-2018 sysmocom s.f.m.c. GmbH</span><br><span>  *</span><br><span>  * All Rights Reserved</span><br><span>  *</span><br><span>@@ -28,7 +28,7 @@</span><br><span>     """</span><br><span>     Stateless IPA protocol multiplexer: add/remove/parse (extended) header</span><br><span>     """</span><br><span style="color: hsl(0, 100%, 40%);">-    version = "0.0.6"</span><br><span style="color: hsl(120, 100%, 40%);">+    version = "0.0.7"</span><br><span>     TCP_PORT_OML = 3002</span><br><span>     TCP_PORT_RSL = 3003</span><br><span>     # OpenBSC extensions: OSMO, MGCP_OLD</span><br><span>@@ -114,6 +114,21 @@</span><br><span>             return struct.unpack('>HBB', data[:4]) + (data[4:], ) # length, protocol, extension, data</span><br><span>         return dlen, proto, None, data[3:] # length, protocol, _, data</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def skip_traps(self, data):</span><br><span style="color: hsl(120, 100%, 40%);">+        """</span><br><span style="color: hsl(120, 100%, 40%);">+        Take one or more ctrl messages and data and return first non-TRAP message or None</span><br><span style="color: hsl(120, 100%, 40%);">+        """</span><br><span style="color: hsl(120, 100%, 40%);">+        if data == None or len(data) == 0:</span><br><span style="color: hsl(120, 100%, 40%);">+            return None</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        (head, tail) = self.split_combined(data)</span><br><span style="color: hsl(120, 100%, 40%);">+        (length, _, _, payload) = self.del_header(head)</span><br><span style="color: hsl(120, 100%, 40%);">+        # skip over broken messages as well as TRAPs</span><br><span style="color: hsl(120, 100%, 40%);">+        if length == 0 or payload[:(length + 3)].decode('utf-8').startswith(self.CTRL_TRAP):</span><br><span style="color: hsl(120, 100%, 40%);">+                return self.skip_traps(tail)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        return head</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     def split_combined(self, data):</span><br><span>         """</span><br><span>         Split the data which contains multiple concatenated IPA messages into tuple (first, rest) where 'rest' contains</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11929">change 11929</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/11929"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: python/osmo-python-tests </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I51ce207c19a1ca96c3e2af7d5efd64f79b02fbb4 </div>
<div style="display:none"> Gerrit-Change-Number: 11929 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>