<p>Stefan Sperling has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11833">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">send NS_POUT_UNBLOCK_ACK before signalling S_NS_UNBLOCK<br><br>In gprs_ns_process_msg(), we were dispatching the S_NS_UNBLOCK<br>signal before sending out the NS_POUT_UNBLOCK_ACK message.<br><br>Signal handlers might send messages to the other side, assuming<br>that NS is now unblocked. However, since such messages will arrive<br>before the UNBLOCK_ACK message the receiver might discard them.<br>This problem has been observed with our TTCN3 BSSGP_Emulation<br>as a peer to osmo-pcu.<br><br>This patch makes TTCN3 PCU TC_paging() test pass regardless of<br>whether the test or osmo-pcu is started first. Before this patch,<br>this test would only pass if the test was started before osmo-pcu.<br>A remaining problem is that the test does not yet keep passing<br>reliably unless osmo-pcu is restarted between test runs.<br><br>Change-Id: I3af54a14bb6bcfa167c9a9d9f67835e7f5b9f1bb<br>Related: OS#2890<br>Related: OS#2388<br>---<br>M src/gb/gprs_ns.c<br>M tests/gb/gprs_ns_test.ok<br>2 files changed, 8 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/33/11833/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c</span><br><span>index 198ead1..0780f2b 100644</span><br><span>--- a/src/gb/gprs_ns.c</span><br><span>+++ b/src/gb/gprs_ns.c</span><br><span>@@ -1413,8 +1413,10 @@</span><br><span>            /* Section 7.2: unblocking procedure */</span><br><span>              LOGP(DNS, LOGL_INFO, "NSEI=%u Rx NS UNBLOCK\n", (*nsvc)->nsei);</span><br><span>                 ns_mark_unblocked(*nsvc);</span><br><span style="color: hsl(0, 100%, 40%);">-               ns_osmo_signal_dispatch(*nsvc, S_NS_UNBLOCK, 0);</span><br><span>             rc = gprs_ns_tx_simple(*nsvc, NS_PDUT_UNBLOCK_ACK);</span><br><span style="color: hsl(120, 100%, 40%);">+           if (rc < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                        break;</span><br><span style="color: hsl(120, 100%, 40%);">+                ns_osmo_signal_dispatch(*nsvc, S_NS_UNBLOCK, 0);</span><br><span>             break;</span><br><span>       case NS_PDUT_UNBLOCK_ACK:</span><br><span>            LOGP(DNS, LOGL_INFO, "NSEI=%u Rx NS UNBLOCK ACK\n", (*nsvc)->nsei);</span><br><span>diff --git a/tests/gb/gprs_ns_test.ok b/tests/gb/gprs_ns_test.ok</span><br><span>index 669e182..3cb1dfc 100644</span><br><span>--- a/tests/gb/gprs_ns_test.ok</span><br><span>+++ b/tests/gb/gprs_ns_test.ok</span><br><span>@@ -133,10 +133,10 @@</span><br><span> PROCESSING UNBLOCK from 0x01020304:1111</span><br><span> 06 </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==> got signal NS_UNBLOCK, NS-VC 0x1122/1.2.3.4:1111</span><br><span> MESSAGE to BSS, msg length 1</span><br><span> 07 </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==> got signal NS_UNBLOCK, NS-VC 0x1122/1.2.3.4:1111</span><br><span> result (UNBLOCK) = 1</span><br><span> </span><br><span> PROCESSING ALIVE_ACK from 0x01020304:1111</span><br><span>@@ -277,10 +277,10 @@</span><br><span> PROCESSING UNBLOCK from 0x01020304:1111</span><br><span> 06 </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:1111</span><br><span> MESSAGE to BSS, msg length 1</span><br><span> 07 </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:1111</span><br><span> result (UNBLOCK) = 1</span><br><span> </span><br><span> PROCESSING ALIVE_ACK from 0x01020304:1111</span><br><span>@@ -318,10 +318,10 @@</span><br><span> PROCESSING UNBLOCK from 0x01020304:2222</span><br><span> 06 </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:2222</span><br><span> MESSAGE to BSS, msg length 1</span><br><span> 07 </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:2222</span><br><span> result (UNBLOCK) = 1</span><br><span> </span><br><span> PROCESSING ALIVE_ACK from 0x01020304:2222</span><br><span>@@ -421,10 +421,10 @@</span><br><span> PROCESSING UNBLOCK from 0x01020304:1111</span><br><span> 06 </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:1111</span><br><span> MESSAGE to BSS, msg length 1</span><br><span> 07 </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:1111</span><br><span> result (UNBLOCK) = 1</span><br><span> </span><br><span> PROCESSING ALIVE_ACK from 0x01020304:1111</span><br><span>@@ -597,10 +597,10 @@</span><br><span> PROCESSING UNBLOCK from 0x01020304:2222</span><br><span> 06 </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222</span><br><span> MESSAGE to BSS, msg length 1</span><br><span> 07 </span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222</span><br><span> result (UNBLOCK) = 1</span><br><span> </span><br><span> PROCESSING ALIVE_ACK from 0x01020304:2222</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11833">change 11833</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/11833"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I3af54a14bb6bcfa167c9a9d9f67835e7f5b9f1bb </div>
<div style="display:none"> Gerrit-Change-Number: 11833 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Stefan Sperling <ssperling@sysmocom.de> </div>