<p>Mykola Shchetinin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13464">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">MT-forwardSM Message Reference fix.<br><br>The Message Reference that came in GSUP message was not used and the GSUP<br>response for the SMS contained the wrong Message Reference which was assigned by<br>MSC, hence the HLR or whatever on the other side of the GSUP connection is was<br>not able to correlate the request and the response.<br><br>transaction.h: gsm_trans: add a field 'msg_ref_gsup' to 'sms' union to store the<br>original Message Reference (from GSUP).<br><br>gsm411_send_rp_data: add an argument to pass Message Reference from GSUP message<br>to the function. Assign Message Reference to the new trans->sms.msg_ref_gsup<br>field.<br><br>gsm411_gsup_mt_handler: pass the *gsup_msg->sm_rp_mr to gsm411_send_rp_data.<br><br>gsm411_rx_rp_ack and gsm411_rx_rp_error: pass trans->sms.msg_ref_gsup instead of<br>rph->msg_ref to the function that sends GSUP reponse.<br><br>Change-Id: Ia50fd0e6c7ba7876522f49a00c55f8499c164331<br>---<br>M include/osmocom/msc/gsm_04_11.h<br>M include/osmocom/msc/transaction.h<br>M src/libmsc/gsm_04_11.c<br>M src/libmsc/gsm_04_11_gsup.c<br>4 files changed, 11 insertions(+), 5 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/64/13464/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h</span><br><span>index 4297cdb..ec160b2 100644</span><br><span>--- a/include/osmocom/msc/gsm_04_11.h</span><br><span>+++ b/include/osmocom/msc/gsm_04_11.h</span><br><span>@@ -44,7 +44,8 @@</span><br><span>              struct gsm_sms *sms);</span><br><span> int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,</span><br><span>                       size_t sm_rp_oa_len, const uint8_t *sm_rp_oa,</span><br><span style="color: hsl(0, 100%, 40%);">-                   size_t sm_rp_ud_len, const uint8_t *sm_rp_ud);</span><br><span style="color: hsl(120, 100%, 40%);">+                        size_t sm_rp_ud_len, const uint8_t *sm_rp_ud,</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t sm_rp_mr);</span><br><span> </span><br><span> void gsm411_sapi_n_reject(struct ran_conn *conn);</span><br><span> </span><br><span>diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h</span><br><span>index 830328b..b5a6662 100644</span><br><span>--- a/include/osmocom/msc/transaction.h</span><br><span>+++ b/include/osmocom/msc/transaction.h</span><br><span>@@ -78,6 +78,7 @@</span><br><span> </span><br><span>                     /* SM-RP-MR, Message Reference (see GSM TS 04.11, section 8.2.3) */</span><br><span>                  uint8_t sm_rp_mr;</span><br><span style="color: hsl(120, 100%, 40%);">+                     uint8_t msg_ref_gsup;</span><br><span> </span><br><span>                    struct gsm_sms *sms;</span><br><span>                 } sms;</span><br><span>diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c</span><br><span>index ccb2610..af21831 100644</span><br><span>--- a/src/libmsc/gsm_04_11.c</span><br><span>+++ b/src/libmsc/gsm_04_11.c</span><br><span>@@ -800,7 +800,7 @@</span><br><span> </span><br><span>        if (trans->net->sms_over_gsup) {</span><br><span>               /* Forward towards SMSC via GSUP */</span><br><span style="color: hsl(0, 100%, 40%);">-             return gsm411_gsup_mt_fwd_sm_res(trans, rph->msg_ref);</span><br><span style="color: hsl(120, 100%, 40%);">+             return gsm411_gsup_mt_fwd_sm_res(trans, trans->sms.msg_ref_gsup);</span><br><span>         }</span><br><span> </span><br><span>        if (!sms) {</span><br><span>@@ -841,7 +841,7 @@</span><br><span> </span><br><span>        if (trans->net->sms_over_gsup) {</span><br><span>               /* Forward towards SMSC via GSUP */</span><br><span style="color: hsl(0, 100%, 40%);">-             return gsm411_gsup_mt_fwd_sm_err(trans, rph->msg_ref, cause);</span><br><span style="color: hsl(120, 100%, 40%);">+              return gsm411_gsup_mt_fwd_sm_err(trans, trans->sms.msg_ref_gsup, cause);</span><br><span>  }</span><br><span> </span><br><span>        if (!sms) {</span><br><span>@@ -1167,7 +1167,8 @@</span><br><span> /* Low-level function to send raw RP-DATA to a given subscriber */</span><br><span> int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,</span><br><span>                       size_t sm_rp_oa_len, const uint8_t *sm_rp_oa,</span><br><span style="color: hsl(0, 100%, 40%);">-                   size_t sm_rp_ud_len, const uint8_t *sm_rp_ud)</span><br><span style="color: hsl(120, 100%, 40%);">+                 size_t sm_rp_ud_len, const uint8_t *sm_rp_ud,</span><br><span style="color: hsl(120, 100%, 40%);">+                 uint8_t sm_rp_mr)</span><br><span> {</span><br><span>       struct gsm_trans *trans;</span><br><span>     struct msgb *msg;</span><br><span>@@ -1177,6 +1178,8 @@</span><br><span>    if (!trans)</span><br><span>          return -ENOMEM;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   trans->sms.msg_ref_gsup = sm_rp_mr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     /* Allocate a message buffer for to be encoded SMS */</span><br><span>        msg = gsm411_msgb_alloc();</span><br><span>   if (!msg) {</span><br><span>diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c</span><br><span>index eb092ae..c8ec89f 100644</span><br><span>--- a/src/libmsc/gsm_04_11_gsup.c</span><br><span>+++ b/src/libmsc/gsm_04_11_gsup.c</span><br><span>@@ -271,7 +271,8 @@</span><br><span>   /* Send RP-DATA */</span><br><span>   rc = gsm411_send_rp_data(net, vsub,</span><br><span>          gsup_msg->sm_rp_oa_len, gsup_msg->sm_rp_oa,</span><br><span style="color: hsl(0, 100%, 40%);">-               gsup_msg->sm_rp_ui_len, gsup_msg->sm_rp_ui);</span><br><span style="color: hsl(120, 100%, 40%);">+            gsup_msg->sm_rp_ui_len, gsup_msg->sm_rp_ui,</span><br><span style="color: hsl(120, 100%, 40%);">+             *gsup_msg->sm_rp_mr);</span><br><span>     if (rc) {</span><br><span>            LOGP(DLSMS, LOGL_NOTICE, "Failed to send MT SMS, "</span><br><span>                         "ignoring MT-forwardSM-Req message...\n");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13464">change 13464</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/13464"/><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: Ia50fd0e6c7ba7876522f49a00c55f8499c164331 </div>
<div style="display:none"> Gerrit-Change-Number: 13464 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Mykola Shchetinin <mykola@pentonet.com> </div>