From 4de011561ff9cb97a4abc9990173c6af21f0a958 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 18 Mar 2018 22:20:34 +0100 Subject: 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 --- src/libmsc/a_iface_bssap.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/libmsc/a_iface_bssap.c') 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 */ -- cgit v1.2.3