From 00a476bc244845352505ed2b8952bf33c442c3e0 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 28 Nov 2019 02:46:05 +0100 Subject: [PATCH] msc_a CC: add some basic sanity tests Change-Id: I9d7d7d4073282abc6c02a6a297c807dc70c5154c --- src/libmsc/msc_a.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index a4048f452..bc5b7ea93 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -518,6 +518,12 @@ static void msc_a_call_leg_ran_local_addr_available(struct msc_a *msc_a) struct gsm_trans *cc_trans = msc_a->cc.active_trans; struct gsm0808_channel_type channel_type; + if (!cc_trans) { + LOG_MSC_A(msc_a, LOGL_ERROR, "No CC transaction active\n"); + call_leg_release(msc_a->cc.call_leg); + return; + } + /* Once a CI is known, we could also CRCX the CN side of the MGW endpoint, but it makes sense to wait for the * codec to be determined by the Assignment Complete message, first. */ @@ -627,6 +633,10 @@ static void msc_a_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, vo LOG_MSC_A(msc_a, LOGL_ERROR, "Invalid data for %s\n", osmo_fsm_event_name(fi->fsm, event)); return; } + if (!msc_a->cc.call_leg) { + LOG_MSC_A(msc_a, LOGL_ERROR, "No call leg active\n"); + return; + } if (!osmo_sockaddr_str_is_nonzero(&rtps->local)) { LOG_MSC_A(msc_a, LOGL_ERROR, "Invalid RTP address received from MGW: " OSMO_SOCKADDR_STR_FMT "\n", OSMO_SOCKADDR_STR_FMT_ARGS(&rtps->local));