<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-msc/+/14477">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/gsm_09_11.c: properly handle OSMO_GSUP_MSGT_PROC_SS_ERROR<br><br>This message can be used by the HLR/EUSE to indicate that something<br>went wrong, e.g. the connection with EUSE is lost, EUSE or the MS<br>did not respond in time, etc. OsmoMSC needs to release the SS/USSD<br>transaction, and send GSM 04.80 RELEASE COMPLETE message to the MS<br>if there is an active RAN connection.<br><br>Change-Id: I076d12ef24d7320eda1df1ee4588da7375ef3d9e<br>Related: (TTCN-3) I5586a88136c936441a842f49248824680603672e<br>Related: OS#2931<br>---<br>M src/libmsc/gsm_09_11.c<br>1 file changed, 25 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/77/14477/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c</span><br><span>index 3bd90dd..c76d2e8 100644</span><br><span>--- a/src/libmsc/gsm_09_11.c</span><br><span>+++ b/src/libmsc/gsm_09_11.c</span><br><span>@@ -437,14 +437,36 @@</span><br><span>    /* Associate logging messages with this subscriber */</span><br><span>        log_set_context(LOG_CTX_VLR_SUBSCR, vsub);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        /* Attempt to find DTAP-transaction */</span><br><span style="color: hsl(120, 100%, 40%);">+        trans = trans_find_by_callref(net, gsup_msg->session_id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       /* Handle errors */</span><br><span>  if (OSMO_GSUP_IS_MSGT_ERROR(gsup_msg->message_type)) {</span><br><span style="color: hsl(0, 100%, 40%);">-               /* FIXME: handle this error somehow! */</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGP(DSS, LOGL_NOTICE, "Rx %s from HLR/EUSE (cause=0x%02x, sid=0x%x)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_gsup_message_type_name(gsup_msg->message_type),</span><br><span style="color: hsl(120, 100%, 40%);">+               gsup_msg->cause, gsup_msg->session_id);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+          if (!trans) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 LOGP(DSS, LOGL_ERROR, "No transaction found for "</span><br><span style="color: hsl(120, 100%, 40%);">+                        "sid=0x%x, nothing to abort\n", gsup_msg->session_id);</span><br><span style="color: hsl(120, 100%, 40%);">+                      return -EAGAIN;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           LOG_TRANS(trans, LOGL_NOTICE, "Aborting the session: sending RELEASE COMPLETE\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Indicate connection release to subscriber (if active) */</span><br><span style="color: hsl(120, 100%, 40%);">+           if (trans->msc_a != NULL) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* TODO: implement GSUP - GSM 04.80 cause mapping */</span><br><span style="color: hsl(120, 100%, 40%);">+                  msc_send_ussd_release_complete_cause(trans->msc_a, trans->transaction_id,</span><br><span style="color: hsl(120, 100%, 40%);">+                               GSM48_CAUSE_LOC_PUN_S_LU, GSM48_CC_CAUSE_TEMP_FAILURE);</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           /* Terminate transaction */</span><br><span style="color: hsl(120, 100%, 40%);">+           trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>                 return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Attempt to find DTAP-transaction */</span><br><span style="color: hsl(0, 100%, 40%);">-  trans = trans_find_by_callref(net, gsup_msg->session_id);</span><br><span>         if (!trans) {</span><br><span>                /* Count network-initiated attempts to establish a NC SS/USSD session */</span><br><span>             rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_REQUESTS]);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-msc/+/14477">change 14477</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/c/osmo-msc/+/14477"/><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-Change-Id: I076d12ef24d7320eda1df1ee4588da7375ef3d9e </div>
<div style="display:none"> Gerrit-Change-Number: 14477 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>