Stefan Sperling has submitted this change and it was merged. ( https://gerrit.osmocom.org/11833 )
Change subject: send NS_POUT_UNBLOCK_ACK before signalling S_NS_UNBLOCK ...................................................................... send NS_POUT_UNBLOCK_ACK before signalling S_NS_UNBLOCK In gprs_ns_process_msg(), we were dispatching the S_NS_UNBLOCK signal before sending out the NS_POUT_UNBLOCK_ACK message. Signal handlers might send messages to the other side, assuming that NS is now unblocked. However, since such messages will arrive before the UNBLOCK_ACK message the receiver might discard them. This problem has been observed with our TTCN3 BSSGP_Emulation as a peer to osmo-pcu. This patch makes TTCN3 PCU TC_paging() test pass regardless of whether the test or osmo-pcu is started first. Before this patch, this test would only pass if the test was started before osmo-pcu. A remaining problem is that the test does not yet keep passing reliably unless osmo-pcu is restarted between test runs. Change-Id: I3af54a14bb6bcfa167c9a9d9f67835e7f5b9f1bb Related: OS#2890 Related: OS#2388 --- M src/gb/gprs_ns.c M tests/gb/gprs_ns_test.ok 2 files changed, 8 insertions(+), 6 deletions(-) Approvals: Max: Looks good to me, but someone else must approve Pau Espin Pedrol: Looks good to me, but someone else must approve Vadim Yanitskiy: Looks good to me, but someone else must approve Neels Hofmeyr: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c index 198ead1..0780f2b 100644 --- a/src/gb/gprs_ns.c +++ b/src/gb/gprs_ns.c @@ -1413,8 +1413,10 @@ /* Section 7.2: unblocking procedure */ LOGP(DNS, LOGL_INFO, "NSEI=%u Rx NS UNBLOCK\n", (*nsvc)->nsei); ns_mark_unblocked(*nsvc); - ns_osmo_signal_dispatch(*nsvc, S_NS_UNBLOCK, 0); rc = gprs_ns_tx_simple(*nsvc, NS_PDUT_UNBLOCK_ACK); + if (rc < 0) + break; + ns_osmo_signal_dispatch(*nsvc, S_NS_UNBLOCK, 0); break; case NS_PDUT_UNBLOCK_ACK: LOGP(DNS, LOGL_INFO, "NSEI=%u Rx NS UNBLOCK ACK\n", (*nsvc)->nsei); diff --git a/tests/gb/gprs_ns_test.ok b/tests/gb/gprs_ns_test.ok index 669e182..3cb1dfc 100644 --- a/tests/gb/gprs_ns_test.ok +++ b/tests/gb/gprs_ns_test.ok @@ -133,10 +133,10 @@ PROCESSING UNBLOCK from 0x01020304:1111 06 -==> got signal NS_UNBLOCK, NS-VC 0x1122/1.2.3.4:1111 MESSAGE to BSS, msg length 1 07 +==> got signal NS_UNBLOCK, NS-VC 0x1122/1.2.3.4:1111 result (UNBLOCK) = 1 PROCESSING ALIVE_ACK from 0x01020304:1111 @@ -277,10 +277,10 @@ PROCESSING UNBLOCK from 0x01020304:1111 06 -==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:1111 MESSAGE to BSS, msg length 1 07 +==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:1111 result (UNBLOCK) = 1 PROCESSING ALIVE_ACK from 0x01020304:1111 @@ -318,10 +318,10 @@ PROCESSING UNBLOCK from 0x01020304:2222 06 -==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:2222 MESSAGE to BSS, msg length 1 07 +==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:2222 result (UNBLOCK) = 1 PROCESSING ALIVE_ACK from 0x01020304:2222 @@ -421,10 +421,10 @@ PROCESSING UNBLOCK from 0x01020304:1111 06 -==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:1111 MESSAGE to BSS, msg length 1 07 +==> got signal NS_UNBLOCK, NS-VC 0x2001/1.2.3.4:1111 result (UNBLOCK) = 1 PROCESSING ALIVE_ACK from 0x01020304:1111 @@ -597,10 +597,10 @@ PROCESSING UNBLOCK from 0x01020304:2222 06 -==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222 MESSAGE to BSS, msg length 1 07 +==> got signal NS_UNBLOCK, NS-VC 0x1001/1.2.3.4:2222 result (UNBLOCK) = 1 PROCESSING ALIVE_ACK from 0x01020304:2222 -- To view, visit https://gerrit.osmocom.org/11833 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I3af54a14bb6bcfa167c9a9d9f67835e7f5b9f1bb Gerrit-Change-Number: 11833 Gerrit-PatchSet: 1 Gerrit-Owner: Stefan Sperling <ssperl...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder (1000002) Gerrit-Reviewer: Max <msur...@sysmocom.de> Gerrit-Reviewer: Neels Hofmeyr <nhofm...@sysmocom.de> Gerrit-Reviewer: Pau Espin Pedrol <pes...@sysmocom.de> Gerrit-Reviewer: Stefan Sperling <ssperl...@sysmocom.de> Gerrit-Reviewer: Vadim Yanitskiy <axilira...@gmail.com>