aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-11-28 02:46:05 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2019-11-28 02:46:05 +0100
commit00a476bc244845352505ed2b8952bf33c442c3e0 (patch)
tree86f98514096a05e6a344649e4e205d51d1f9e896
parentcc918cb416e129fd6e3f3deec7e03c3f54a83535 (diff)
msc_a CC: add some basic sanity tests
-rw-r--r--src/libmsc/msc_a.c10
1 files changed, 10 insertions, 0 deletions
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));