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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">rx CM Service Req: reject double use sooner<br><br>When a CM Service Req is being rejected, we should do so before changing the<br>state of the current conn.<br><br>Concerning multiple CM Service Requests: in fact we should store multiple<br>requests, but first fix the status quo of rejecting multiple requests.<br><br>Change-Id: I39209ee6662694aa054a2fc0d21eae76fb33e2f1<br>---<br>M src/libmsc/gsm_04_08.c<br>M tests/msc_vlr/msc_vlr_test_reject_concurrency.err<br>2 files changed, 9 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c</span><br><span>index 60da275..646e9a0 100644</span><br><span>--- a/src/libmsc/gsm_04_08.c</span><br><span>+++ b/src/libmsc/gsm_04_08.c</span><br><span>@@ -726,6 +726,14 @@</span><br><span>                                              GSM48_REJECT_INCORRECT_MESSAGE);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (ran_conn_is_establishing_auth_ciph(conn)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               LOG_RAN_CONN(conn, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                     "Cannot accept CM Service Request, conn already busy establishing authenticity\n");</span><br><span style="color: hsl(120, 100%, 40%);">+            msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION);</span><br><span style="color: hsl(120, 100%, 40%);">+                return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+               /* or should we accept and note down the service request anyway? */</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  gsm48_mi_to_string(mi_string, sizeof(mi_string), mi, mi_len);</span><br><span> </span><br><span>    mi_type = mi[0] & GSM_MI_TYPE_MASK;</span><br><span>@@ -764,13 +772,6 @@</span><br><span>       if (ran_conn_is_accepted(conn))</span><br><span>              return cm_serv_reuse_conn(conn, mi_p);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (ran_conn_is_establishing_auth_ciph(conn)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DMM, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                "Cannot accept CM Service Request, conn already busy establishing authenticity\n");</span><br><span style="color: hsl(0, 100%, 40%);">-              msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION);</span><br><span style="color: hsl(0, 100%, 40%);">-          return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-         /* or should we accept and note down the service request anyway? */</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span> </span><br><span>        ran_conn_update_id(conn, COMPLETE_LAYER3_CM_SERVICE_REQ, mi_string);</span><br><span> </span><br><span>diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>index 7443d06..b9e38fa 100644</span><br><span>--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err</span><br><span>@@ -316,8 +316,7 @@</span><br><span>   MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ</span><br><span> DREF IMSI:901700000004620: MSC conn use + dtap == 1 (0x2: dtap)</span><br><span> DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)</span><br><span style="color: hsl(0, 100%, 40%);">-DMM RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Rx CM SERVICE REQUEST cm_service_type=0x08 MI(IMSI)=901700000004620</span><br><span style="color: hsl(0, 100%, 40%);">-DMM Cannot accept CM Service Request, conn already busy establishing authenticity</span><br><span style="color: hsl(120, 100%, 40%);">+DBSSAP RAN_conn(LU:901700000004620){RAN_CONN_S_AUTH_CIPH}: Cannot accept CM Service Request, conn already busy establishing authenticity</span><br><span> DMM -> CM SERVICE Reject cause: 22</span><br><span> DMSC msc_tx 3 bytes to IMSI:901700000004620 via GERAN-A</span><br><span> - DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052216</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12471">change 12471</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/12471"/><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: I39209ee6662694aa054a2fc0d21eae76fb33e2f1 </div>
<div style="display:none"> Gerrit-Change-Number: 12471 </div>
<div style="display:none"> Gerrit-PatchSet: 6 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-CC: Vadim Yanitskiy <axilirator@gmail.com> </div>