re-order the sequence of events in bsc_api:handle_release()
This should make sure conn->lchan is valid throughout the release
cause, especially make trau_mux_unmap() happy that conn->lchan
still exists.
diff --git a/openbsc/src/bsc_api.c b/openbsc/src/bsc_api.c
index 8e858c5..73b29b5 100644
--- a/openbsc/src/bsc_api.c
+++ b/openbsc/src/bsc_api.c
@@ -617,11 +617,6 @@
{
int destruct = 1;
- /* now give up all channels */
- if (conn->lchan == lchan)
- conn->lchan = NULL;
- if (conn->ho_lchan == lchan)
- conn->ho_lchan = NULL;
if (conn->secondary_lchan == lchan) {
bsc_del_timer(&conn->T10);
conn->secondary_lchan = NULL;
@@ -631,12 +626,16 @@
NULL);
}
- lchan->conn = NULL;
-
/* clear the connection now */
if (bsc->clear_request)
destruct = bsc->clear_request(conn, 0);
+ /* now give up all channels */
+ if (conn->lchan == lchan)
+ conn->lchan = NULL;
+ if (conn->ho_lchan == lchan)
+ conn->ho_lchan = NULL;
+ lchan->conn = NULL;
gsm0808_clear(conn);