<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11265">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mncc: protect against non responsive MNCC during setup<br><br>When the SETUP is sent throgh the MNCC socket to the remote entity<br>(e.g. osmo-sip-connector) we expect an almost immediate response that<br>tells us if the call was accepted or rejected. However, there may be<br>cases where the remote entity becomes unresponsive. In those cases the<br>MNCC handling on the msc side would hang. Lets schedule a timer to make<br>sure that osmo-msc can not hang if the setup is not answered.<br><br>- Add timeout in gsm48_cc_rx_setup(), hard-clear the call when the<br>  timeout expires (CLEAR COMMAND to BSC)<br><br>Change-Id: Ieaf6015d78ddef68827be107d3722c9d089f7c66<br>Related: OS#3599<br>---<br>M src/libmsc/gsm_04_08_cc.c<br>1 file changed, 16 insertions(+), 0 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/65/11265/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c</span><br><span>index 19e6cba..42f1b76 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>@@ -71,6 +71,8 @@</span><br><span> </span><br><span> #include <assert.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define MNCC_SETUP_TIMEOUT_T10303 25, 0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static uint32_t new_callref = 0x80000001;</span><br><span> </span><br><span> </span><br><span>@@ -351,6 +353,13 @@</span><br><span> static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg);</span><br><span> static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static void gsm48_cc_hard_clear(struct gsm_trans *trans)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       gsm48_stop_cc_timer(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+   new_cc_state(trans, GSM_CSTATE_NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ trans_free(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void gsm48_cc_timeout(void *arg)</span><br><span> {</span><br><span>      struct gsm_trans *trans = arg;</span><br><span>@@ -400,6 +409,9 @@</span><br><span>         case 0x323:</span><br><span>          disconnect = 1;</span><br><span>              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case 0x10303:</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm48_cc_hard_clear(trans);</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span>       default:</span><br><span>             release = 1;</span><br><span>         }</span><br><span>@@ -557,6 +569,10 @@</span><br><span>     /* indicate setup to MNCC */</span><br><span>         mncc_recvmsg(trans->net, trans, MNCC_SETUP_IND, &setup);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* Normally MNCC should answer immediately, in order to protect</span><br><span style="color: hsl(120, 100%, 40%);">+        * against non responsive MNCC we schedule a timer. */</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm48_start_cc_timer(trans, 0x10303, MNCC_SETUP_TIMEOUT_T10303);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   /* MNCC code will modify the channel asynchronously, we should</span><br><span>        * ipaccess-bind only after the modification has been made to the</span><br><span>     * lchan->tch_mode */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11265">change 11265</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/11265"/><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: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ieaf6015d78ddef68827be107d3722c9d089f7c66 </div>
<div style="display:none"> Gerrit-Change-Number: 11265 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>