Change in libosmocore[master]: send NS_POUT_UNBLOCK_ACK before signalling S_NS_UNBLOCK

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Stefan Sperling gerrit-no-reply at lists.osmocom.org
Tue Nov 20 09:38:55 UTC 2018


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 <ssperling at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Stefan Sperling <ssperling at sysmocom.de>
Gerrit-Reviewer: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181120/200f94d9/attachment.htm>


More information about the gerrit-log mailing list