summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gb/gprs_ns.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 0780f2bb..1281c9f4 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -1413,9 +1413,15 @@ int gprs_ns_process_msg(struct gprs_ns_inst *nsi, struct msgb *msg,
/* Section 7.2: unblocking procedure */
LOGP(DNS, LOGL_INFO, "NSEI=%u Rx NS UNBLOCK\n", (*nsvc)->nsei);
ns_mark_unblocked(*nsvc);
+ /* This UNBLOCK_ACK message will cause our peer to move us into NS_UNBLOCKED state. */
rc = gprs_ns_tx_simple(*nsvc, NS_PDUT_UNBLOCK_ACK);
if (rc < 0)
break;
+ /*
+ * UNBLOCK_ACK has been transmitted.
+ * Signal handlers may send additional messages following UNBLOCK_ACK under
+ * the assumption that NS is now in UNBLOCKED state at our peer's end.
+ */
ns_osmo_signal_dispatch(*nsvc, S_NS_UNBLOCK, 0);
break;
case NS_PDUT_UNBLOCK_ACK: