<p>Neels Hofmeyr <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13931">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">fix regression: fix internal MNCC operation<br><br>While developing the inter-MSC handover refactoring, I was annoyed by the fact<br>that mncc_tx_to_cc() receives an MNCC message struct containing a msg_type, as<br>well as a separate msg_type argument, which may deviate from each other. So, as<br>a first step I wanted to make sure that all callers send identical values for<br>both by inserting an OSMO_ASSERT(msg_type == msg->msg_type). Later I was going<br>to remove the separate msg_type argument.<br><br>I then forgot to<br>- carry on to remove the argument and<br>- to actually test with internal MNCC (it so happens that all of our ttcn3<br>  tests also use external MNCC).<br><br>As a result, the "large refactoring" patch for inter-MSC Handover breaks<br>internal MNCC operation.<br><br>Fix that: remove the separate msg_type argument and make sure that all callers<br>of mncc_tx_to_cc() indeed pass the desired msg_type in msg->msg_type, and hence<br>also remove the odd duality of arguments.<br><br>Various functions in mncc_builtin.c also exhibit this separate msg_type<br>argument, which are all unused and make absolutely no sense. Remove those as<br>well.<br><br>Related: OS#3989<br>Change-Id: I966ce764796982709ea3312e76988a95257acb8d<br>---<br>M include/osmocom/msc/gsm_04_08.h<br>M src/libmsc/gsm_04_08_cc.c<br>M src/libmsc/mncc_builtin.c<br>M src/libmsc/mncc_sock.c<br>M tests/msc_vlr/msc_vlr_test_call.c<br>M tests/msc_vlr/msc_vlr_tests.c<br>6 files changed, 57 insertions(+), 39 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_04_08.h b/include/osmocom/msc/gsm_04_08.h</span><br><span>index 47747cb..661da42 100644</span><br><span>--- a/include/osmocom/msc/gsm_04_08.h</span><br><span>+++ b/include/osmocom/msc/gsm_04_08.h</span><br><span>@@ -45,7 +45,7 @@</span><br><span> int gsm48_send_rr_ass_cmd(struct gsm_lchan *dest_lchan, struct gsm_lchan *lchan, uint8_t power_class);</span><br><span> int gsm48_send_ho_cmd(struct gsm_lchan *old_lchan, struct gsm_lchan *new_lchan, uint8_t power_command, uint8_t ho_ref);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg);</span><br><span style="color: hsl(120, 100%, 40%);">+int mncc_tx_to_cc(struct gsm_network *net, void *arg);</span><br><span> </span><br><span> /* convert a ASCII phone number to call-control BCD */</span><br><span> int encode_bcd_number(uint8_t *bcd_lv, uint8_t max_len,</span><br><span>diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c</span><br><span>index 0624d56..2869bba 100644</span><br><span>--- a/src/libmsc/gsm_04_08_cc.c</span><br><span>+++ b/src/libmsc/gsm_04_08_cc.c</span><br><span>@@ -2010,11 +2010,10 @@</span><br><span> }</span><br><span> </span><br><span> /* Demux incoming genuine calls to GSM CC from MNCC forwarding for inter-MSC handover */</span><br><span style="color: hsl(0, 100%, 40%);">-int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)</span><br><span style="color: hsl(120, 100%, 40%);">+int mncc_tx_to_cc(struct gsm_network *net, void *arg)</span><br><span> {</span><br><span>     const union mncc_msg *msg = arg;</span><br><span>     struct mncc_call *mncc_call = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_ASSERT(msg_type == msg->msg_type);</span><br><span> </span><br><span>       if (msg->msg_type == MNCC_SETUP_REQ) {</span><br><span>            /* Incoming call to forward for inter-MSC Handover? */</span><br><span>diff --git a/src/libmsc/mncc_builtin.c b/src/libmsc/mncc_builtin.c</span><br><span>index 6dd7e35..5754976 100644</span><br><span>--- a/src/libmsc/mncc_builtin.c</span><br><span>+++ b/src/libmsc/mncc_builtin.c</span><br><span>@@ -67,7 +67,7 @@</span><br><span> }</span><br><span> </span><br><span> /* on incoming call, look up database and send setup to remote subscr. */</span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_setup_ind(struct gsm_call *call, int msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_setup_ind(struct gsm_call *call,</span><br><span>                      struct gsm_mncc *setup)</span><br><span> {</span><br><span>       struct gsm_mncc mncc;</span><br><span>@@ -116,29 +116,33 @@</span><br><span>        /* send call proceeding */</span><br><span>   memset(&mncc, 0, sizeof(struct gsm_mncc));</span><br><span>       mncc.callref = call->callref;</span><br><span style="color: hsl(120, 100%, 40%);">+      mncc.msg_type = MNCC_CALL_PROC_REQ;</span><br><span>  DEBUGCC(call, remote, "Accepting call.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-   mncc_tx_to_cc(call->net, MNCC_CALL_PROC_REQ, &mncc);</span><br><span style="color: hsl(120, 100%, 40%);">+   mncc_tx_to_cc(call->net, &mncc);</span><br><span> </span><br><span>  /* modify mode */</span><br><span>    memset(&mncc, 0, sizeof(struct gsm_mncc));</span><br><span>       mncc.callref = call->callref;</span><br><span style="color: hsl(120, 100%, 40%);">+      mncc.msg_type = MNCC_LCHAN_MODIFY;</span><br><span>   DEBUGCC(call, remote, "Modify channel mode.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-      mncc_tx_to_cc(call->net, MNCC_LCHAN_MODIFY, &mncc);</span><br><span style="color: hsl(120, 100%, 40%);">+    mncc_tx_to_cc(call->net, &mncc);</span><br><span> </span><br><span>  /* send setup to remote */</span><br><span> //        setup->fields |= MNCC_F_SIGNAL;</span><br><span> //        setup->signal = GSM48_SIGNAL_DIALTONE;</span><br><span>    setup->callref = remote->callref;</span><br><span style="color: hsl(120, 100%, 40%);">+       setup->msg_type = MNCC_SETUP_REQ;</span><br><span>         DEBUGCC(call, remote, "Forwarding SETUP to remote.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-       return mncc_tx_to_cc(remote->net, MNCC_SETUP_REQ, setup);</span><br><span style="color: hsl(120, 100%, 40%);">+  return mncc_tx_to_cc(remote->net, setup);</span><br><span> </span><br><span> out_reject:</span><br><span style="color: hsl(0, 100%, 40%);">- mncc_tx_to_cc(call->net, MNCC_REJ_REQ, &mncc);</span><br><span style="color: hsl(120, 100%, 40%);">+ mncc.msg_type = MNCC_REJ_REQ;</span><br><span style="color: hsl(120, 100%, 40%);">+ mncc_tx_to_cc(call->net, &mncc);</span><br><span>      free_call(call);</span><br><span>     return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_alert_ind(struct gsm_call *call, int msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_alert_ind(struct gsm_call *call,</span><br><span>                     struct gsm_mncc *alert)</span><br><span> {</span><br><span>       struct gsm_call *remote;</span><br><span>@@ -147,11 +151,12 @@</span><br><span>     if (!(remote = get_call_ref(call->remote_ref)))</span><br><span>           return 0;</span><br><span>    alert->callref = remote->callref;</span><br><span style="color: hsl(120, 100%, 40%);">+       alert->msg_type = MNCC_ALERT_REQ;</span><br><span>         DEBUGCC(call, remote, "Forwarding ALERT to remote.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-       return mncc_tx_to_cc(remote->net, MNCC_ALERT_REQ, alert);</span><br><span style="color: hsl(120, 100%, 40%);">+  return mncc_tx_to_cc(remote->net, alert);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_notify_ind(struct gsm_call *call, int msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_notify_ind(struct gsm_call *call,</span><br><span>                         struct gsm_mncc *notify)</span><br><span> {</span><br><span>     struct gsm_call *remote;</span><br><span>@@ -160,11 +165,12 @@</span><br><span>     if (!(remote = get_call_ref(call->remote_ref)))</span><br><span>           return 0;</span><br><span>    notify->callref = remote->callref;</span><br><span style="color: hsl(120, 100%, 40%);">+      notify->msg_type = MNCC_NOTIFY_REQ;</span><br><span>       DEBUGCC(call, remote, "Forwarding NOTIF to remote.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-       return mncc_tx_to_cc(remote->net, MNCC_NOTIFY_REQ, notify);</span><br><span style="color: hsl(120, 100%, 40%);">+        return mncc_tx_to_cc(remote->net, notify);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_setup_cnf(struct gsm_call *call, int msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_setup_cnf(struct gsm_call *call,</span><br><span>                         struct gsm_mncc *connect)</span><br><span> {</span><br><span>     struct gsm_mncc connect_ack;</span><br><span>@@ -173,26 +179,29 @@</span><br><span> </span><br><span>     /* acknowledge connect */</span><br><span>    memset(&connect_ack, 0, sizeof(struct gsm_mncc));</span><br><span style="color: hsl(120, 100%, 40%);">+ connect_ack.msg_type = MNCC_SETUP_COMPL_REQ;</span><br><span>         connect_ack.callref = call->callref;</span><br><span>      DEBUGP(DMNCC, "(call %x) Acknowledge SETUP.\n", call->callref);</span><br><span style="color: hsl(0, 100%, 40%);">-    mncc_tx_to_cc(call->net, MNCC_SETUP_COMPL_REQ, &connect_ack);</span><br><span style="color: hsl(120, 100%, 40%);">+  mncc_tx_to_cc(call->net, &connect_ack);</span><br><span> </span><br><span>   /* send connect message to remote */</span><br><span>         if (!(remote = get_call_ref(call->remote_ref)))</span><br><span>           return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     connect->msg_type = MNCC_SETUP_RSP;</span><br><span>       connect->callref = remote->callref;</span><br><span>    DEBUGCC(call, remote, "Sending CONNECT to remote.\n");</span><br><span style="color: hsl(0, 100%, 40%);">-        mncc_tx_to_cc(remote->net, MNCC_SETUP_RSP, connect);</span><br><span style="color: hsl(120, 100%, 40%);">+       mncc_tx_to_cc(remote->net, connect);</span><br><span> </span><br><span>  /* bridge tch */</span><br><span style="color: hsl(120, 100%, 40%);">+      bridge.msg_type = MNCC_BRIDGE;</span><br><span>       bridge.callref[0] = call->callref;</span><br><span>        bridge.callref[1] = call->remote_ref;</span><br><span>     DEBUGCC(call, remote, "Bridging with remote.\n");</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- return mncc_tx_to_cc(call->net, MNCC_BRIDGE, &bridge);</span><br><span style="color: hsl(120, 100%, 40%);">+ return mncc_tx_to_cc(call->net, &bridge);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_disc_ind(struct gsm_call *call, int msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_disc_ind(struct gsm_call *call,</span><br><span>                       struct gsm_mncc *disc)</span><br><span> {</span><br><span>         struct gsm_call *remote;</span><br><span>@@ -200,18 +209,20 @@</span><br><span>     /* send release */</span><br><span>   DEBUGP(DMNCC, "(call %x) Releasing call with cause %d\n",</span><br><span>          call->callref, disc->cause.value);</span><br><span style="color: hsl(0, 100%, 40%);">-        mncc_tx_to_cc(call->net, MNCC_REL_REQ, disc);</span><br><span style="color: hsl(120, 100%, 40%);">+      disc->msg_type = MNCC_REL_REQ;</span><br><span style="color: hsl(120, 100%, 40%);">+     mncc_tx_to_cc(call->net, disc);</span><br><span> </span><br><span>       /* send disc to remote */</span><br><span>    if (!(remote = get_call_ref(call->remote_ref))) {</span><br><span>                 return 0;</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+     disc->msg_type = MNCC_DISC_REQ;</span><br><span>   disc->callref = remote->callref;</span><br><span>       DEBUGCC(call, remote, "Disconnecting remote with cause %d\n", disc->cause.value);</span><br><span style="color: hsl(0, 100%, 40%);">-  return mncc_tx_to_cc(remote->net, MNCC_DISC_REQ, disc);</span><br><span style="color: hsl(120, 100%, 40%);">+    return mncc_tx_to_cc(remote->net, disc);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_rel_ind(struct gsm_call *call, int msg_type, struct gsm_mncc *rel)</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_rel_ind(struct gsm_call *call, struct gsm_mncc *rel)</span><br><span> {</span><br><span>    struct gsm_call *remote;</span><br><span> </span><br><span>@@ -221,6 +232,7 @@</span><br><span>           return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ rel->msg_type = MNCC_REL_REQ;</span><br><span>     rel->callref = remote->callref;</span><br><span>        DEBUGCC(call, remote, "Releasing remote with cause %d\n", rel->cause.value);</span><br><span> </span><br><span>@@ -230,12 +242,12 @@</span><br><span>         * it and then we will end up with a double free and a crash</span><br><span>          */</span><br><span>  free_call(call);</span><br><span style="color: hsl(0, 100%, 40%);">-        mncc_tx_to_cc(remote->net, MNCC_REL_REQ, rel);</span><br><span style="color: hsl(120, 100%, 40%);">+     mncc_tx_to_cc(remote->net, rel);</span><br><span> </span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int mncc_rel_cnf(struct gsm_call *call, int msg_type, struct gsm_mncc *rel)</span><br><span style="color: hsl(120, 100%, 40%);">+static int mncc_rel_cnf(struct gsm_call *call, struct gsm_mncc *rel)</span><br><span> {</span><br><span>      free_call(call);</span><br><span>     return 0;</span><br><span>@@ -273,10 +285,11 @@</span><br><span>                    struct gsm_mncc rel;</span><br><span> </span><br><span>                     memset(&rel, 0, sizeof(struct gsm_mncc));</span><br><span style="color: hsl(120, 100%, 40%);">+                 rel.msg_type = MNCC_REL_REQ;</span><br><span>                         rel.callref = callref;</span><br><span>                       mncc_set_cause(&rel, GSM48_CAUSE_LOC_PRN_S_LU,</span><br><span>                                  GSM48_CC_CAUSE_RESOURCE_UNAVAIL);</span><br><span style="color: hsl(0, 100%, 40%);">-                        mncc_tx_to_cc(net, MNCC_REL_REQ, &rel);</span><br><span style="color: hsl(120, 100%, 40%);">+                   mncc_tx_to_cc(net, &rel);</span><br><span>                        goto out_free;</span><br><span>               }</span><br><span>            llist_add_tail(&call->entry, &call_list);</span><br><span>@@ -296,47 +309,51 @@</span><br><span> </span><br><span>     switch(msg_type) {</span><br><span>   case MNCC_SETUP_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-            rc = mncc_setup_ind(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = mncc_setup_ind(call, arg);</span><br><span>              break;</span><br><span>       case MNCC_SETUP_CNF:</span><br><span style="color: hsl(0, 100%, 40%);">-            rc = mncc_setup_cnf(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = mncc_setup_cnf(call, arg);</span><br><span>              break;</span><br><span>       case MNCC_SETUP_COMPL_IND:</span><br><span>           break;</span><br><span>       case MNCC_CALL_CONF_IND:</span><br><span>             /* we now need to MODIFY the channel */</span><br><span style="color: hsl(0, 100%, 40%);">-         mncc_tx_to_cc(call->net, MNCC_LCHAN_MODIFY, data);</span><br><span style="color: hsl(120, 100%, 40%);">+         data->msg_type = MNCC_LCHAN_MODIFY;</span><br><span style="color: hsl(120, 100%, 40%);">+                mncc_tx_to_cc(call->net, data);</span><br><span>           break;</span><br><span>       case MNCC_ALERT_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-            rc = mncc_alert_ind(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = mncc_alert_ind(call, arg);</span><br><span>              break;</span><br><span>       case MNCC_NOTIFY_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-           rc = mncc_notify_ind(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = mncc_notify_ind(call, arg);</span><br><span>             break;</span><br><span>       case MNCC_DISC_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-             rc = mncc_disc_ind(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+              rc = mncc_disc_ind(call, arg);</span><br><span>               break;</span><br><span>       case MNCC_REL_IND:</span><br><span>   case MNCC_REJ_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = mncc_rel_ind(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = mncc_rel_ind(call, arg);</span><br><span>                break;</span><br><span>       case MNCC_REL_CNF:</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = mncc_rel_cnf(call, msg_type, arg);</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = mncc_rel_cnf(call, arg);</span><br><span>                break;</span><br><span>       case MNCC_FACILITY_IND:</span><br><span>              break;</span><br><span>       case MNCC_START_DTMF_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = mncc_tx_to_cc(net, MNCC_START_DTMF_REJ, data);</span><br><span style="color: hsl(120, 100%, 40%);">+           data->msg_type = MNCC_START_DTMF_REJ;</span><br><span style="color: hsl(120, 100%, 40%);">+              rc = mncc_tx_to_cc(net, data);</span><br><span>               break;</span><br><span>       case MNCC_STOP_DTMF_IND:</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = mncc_tx_to_cc(net, MNCC_STOP_DTMF_RSP, data);</span><br><span style="color: hsl(120, 100%, 40%);">+            data->msg_type = MNCC_STOP_DTMF_RSP;</span><br><span style="color: hsl(120, 100%, 40%);">+               rc = mncc_tx_to_cc(net, data);</span><br><span>               break;</span><br><span>       case MNCC_MODIFY_IND:</span><br><span>                mncc_set_cause(data, GSM48_CAUSE_LOC_PRN_S_LU,</span><br><span>                               GSM48_CC_CAUSE_SERV_OPT_UNIMPL);</span><br><span>             DEBUGP(DMNCC, "(call %x) Rejecting MODIFY with cause %d\n",</span><br><span>                        call->callref, data->cause.value);</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = mncc_tx_to_cc(net, MNCC_MODIFY_REJ, data);</span><br><span style="color: hsl(120, 100%, 40%);">+               data->msg_type = MNCC_MODIFY_REJ;</span><br><span style="color: hsl(120, 100%, 40%);">+          rc = mncc_tx_to_cc(net, data);</span><br><span>               break;</span><br><span>       case MNCC_MODIFY_CNF:</span><br><span>                break;</span><br><span>@@ -345,14 +362,16 @@</span><br><span>                               GSM48_CC_CAUSE_SERV_OPT_UNIMPL);</span><br><span>             DEBUGP(DMNCC, "(call %x) Rejecting HOLD with cause %d\n",</span><br><span>                  call->callref, data->cause.value);</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = mncc_tx_to_cc(net, MNCC_HOLD_REJ, data);</span><br><span style="color: hsl(120, 100%, 40%);">+         data->msg_type = MNCC_HOLD_REJ;</span><br><span style="color: hsl(120, 100%, 40%);">+            rc = mncc_tx_to_cc(net, data);</span><br><span>               break;</span><br><span>       case MNCC_RETRIEVE_IND:</span><br><span>              mncc_set_cause(data, GSM48_CAUSE_LOC_PRN_S_LU,</span><br><span>                               GSM48_CC_CAUSE_SERV_OPT_UNIMPL);</span><br><span>             DEBUGP(DMNCC, "(call %x) Rejecting RETRIEVE with cause %d\n",</span><br><span>                      call->callref, data->cause.value);</span><br><span style="color: hsl(0, 100%, 40%);">-                rc = mncc_tx_to_cc(net, MNCC_RETRIEVE_REJ, data);</span><br><span style="color: hsl(120, 100%, 40%);">+             data->msg_type = MNCC_RETRIEVE_REJ;</span><br><span style="color: hsl(120, 100%, 40%);">+                rc = mncc_tx_to_cc(net, data);</span><br><span>               break;</span><br><span>       default:</span><br><span>             LOGP(DMNCC, LOGL_NOTICE, "(call %x) Message unhandled\n", callref);</span><br><span>diff --git a/src/libmsc/mncc_sock.c b/src/libmsc/mncc_sock.c</span><br><span>index b2739e8..0a4e99b 100644</span><br><span>--- a/src/libmsc/mncc_sock.c</span><br><span>+++ b/src/libmsc/mncc_sock.c</span><br><span>@@ -118,7 +118,7 @@</span><br><span> </span><br><span>         rc = mncc_prim_check(mncc_prim, rc);</span><br><span>         if (rc == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-            rc = mncc_tx_to_cc(state->net, mncc_prim->msg_type, mncc_prim);</span><br><span style="color: hsl(120, 100%, 40%);">+         rc = mncc_tx_to_cc(state->net, mncc_prim);</span><br><span> </span><br><span>    /* as we always synchronously process the message in mncc_send() and</span><br><span>          * its callbacks, we can free the message here. */</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>index 9ca3bf1..b31239e 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_call.c</span><br><span>@@ -29,7 +29,7 @@</span><br><span> static void mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc)</span><br><span> {</span><br><span>       mncc->msg_type = msg_type;</span><br><span style="color: hsl(0, 100%, 40%);">-   mncc_tx_to_cc(net, msg_type, mncc);</span><br><span style="color: hsl(120, 100%, 40%);">+   mncc_tx_to_cc(net, mncc);</span><br><span> }</span><br><span> </span><br><span> /*</span><br><span>diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c</span><br><span>index 9c3ecb7..81ac3f7 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_tests.c</span><br><span>+++ b/tests/msc_vlr/msc_vlr_tests.c</span><br><span>@@ -680,7 +680,7 @@</span><br><span>              log("MNCC: callref 0x%x: Call Release triggering %s", mncc->callref,</span><br><span>                get_mncc_name(on_call_release_mncc_sends_to_cc_data->msg_type));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-             mncc_tx_to_cc(net, on_call_release_mncc_sends_to_cc_data->msg_type,</span><br><span style="color: hsl(120, 100%, 40%);">+                mncc_tx_to_cc(net,</span><br><span>                         on_call_release_mncc_sends_to_cc_data);</span><br><span> </span><br><span>            on_call_release_mncc_sends_to_cc_data = NULL;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13931">change 13931</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13931"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I966ce764796982709ea3312e76988a95257acb8d </div>
<div style="display:none"> Gerrit-Change-Number: 13931 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>