diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-03-18 22:20:34 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-03-18 21:47:15 +0000 |
commit | 4de011561ff9cb97a4abc9990173c6af21f0a958 (patch) | |
tree | 2676837b947d9d52481e80a899ce1aaa78ad9e8c /src | |
parent | 5060f563c6ea185842771ae311b0800d657fa14a (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')
-rw-r--r-- | src/libmsc/a_iface_bssap.c | 4 |
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 */ |