aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/a_iface_bssap.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-03-18 22:20:34 +0100
committerHarald Welte <laforge@gnumonks.org>2018-03-18 21:47:15 +0000
commit4de011561ff9cb97a4abc9990173c6af21f0a958 (patch)
tree2676837b947d9d52481e80a899ce1aaa78ad9e8c /src/libmsc/a_iface_bssap.c
parent5060f563c6ea185842771ae311b0800d657fa14a (diff)
a_iface_bssap: Treat inbound RESET as implicit RESET ACK
If both sides are sending RESET at the same time, they are not aware of each other. This leads to synchronization problems in wich the remote side is transmitting e.g. a COMPL L3 INFO after receiving a RESET ACK, but before even receiving or processing the RESET in the inverse direction. So let's treat receiving a RESET as an implicit RESET ACK to any RESET we may have sent. Change-Id: I0ae34fbb3735592bb7cffa5aaf421b14a8acc90e
Diffstat (limited to 'src/libmsc/a_iface_bssap.c')
-rw-r--r--src/libmsc/a_iface_bssap.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c
index f131eca74..2be9afa92 100644
--- a/src/libmsc/a_iface_bssap.c
+++ b/src/libmsc/a_iface_bssap.c
@@ -121,6 +121,10 @@ static void bssmap_rx_reset(struct osmo_sccp_user *scu, const struct a_conn_info
if (!a_conn_info->bsc->reset)
a_start_reset(a_conn_info->bsc, true);
+
+ /* Treat an incoming RESET like an ACK to any RESET request we may have just sent.
+ * After all, what we wanted is the A interface to be reset, which we now know has happened. */
+ a_reset_ack_confirm(a_conn_info->bsc->reset);
}
/* Endpoint to handle BSSMAP reset acknowlegement */