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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">send Immediate Assignment Reject only before Immediate Assignment<br><br>Set flag lchan->activate.immediate_assignment_sent to true when sending, and<br>omit a reject after that.<br><br>lchan->activate gets completely zeroed in lchan_reset(), which sets that flag<br>back to false whenever an lchan becomes inactive.<br><br>Related: OS#3709<br>Change-Id: I9ad094d272254d7aee9b0a676201d4ed8cd727ca<br>---<br>M include/osmocom/bsc/gsm_data.h<br>M src/osmo-bsc/lchan_fsm.c<br>2 files changed, 13 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h</span><br><span>index ba52c99..15158cd 100644</span><br><span>--- a/include/osmocom/bsc/gsm_data.h</span><br><span>+++ b/include/osmocom/bsc/gsm_data.h</span><br><span>@@ -501,6 +501,7 @@</span><br><span>   struct {</span><br><span>             enum lchan_activate_mode activ_for;</span><br><span>          bool activ_ack; /*< true as soon as RSL Chan Activ Ack is received */</span><br><span style="color: hsl(120, 100%, 40%);">+              bool immediate_assignment_sent;</span><br><span>              /*! This flag ensures that when an lchan activation has succeeded, and we have already</span><br><span>                * sent ACKs like Immediate Assignment or BSSMAP Assignment Complete, and if other errors</span><br><span>             * occur later, e.g. during release, that we don't send a NACK out of context. */</span><br><span>diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c</span><br><span>index 71b40c1..5e99239 100644</span><br><span>--- a/src/osmo-bsc/lchan_fsm.c</span><br><span>+++ b/src/osmo-bsc/lchan_fsm.c</span><br><span>@@ -97,9 +97,17 @@</span><br><span>      switch (activ_for) {</span><br><span> </span><br><span>     case FOR_MS_CHANNEL_REQUEST:</span><br><span style="color: hsl(0, 100%, 40%);">-            LOG_LCHAN(lchan, LOGL_NOTICE, "Tx Immediate Assignment Reject (%s)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                          lchan->last_error ? : "unknown error");</span><br><span style="color: hsl(0, 100%, 40%);">-          rsl_tx_imm_ass_rej(lchan->ts->trx->bts, lchan->rqd_ref);</span><br><span style="color: hsl(120, 100%, 40%);">+          if (lchan->activate.immediate_assignment_sent) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOG_LCHAN(lchan, LOGL_ERROR,</span><br><span style="color: hsl(120, 100%, 40%);">+                            "lchan activation failed, after Immediate Assignment message was sent (%s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                              lchan->last_error ? : "unknown error");</span><br><span style="color: hsl(120, 100%, 40%);">+                        /* Likely the MS never showed up. Just tear down the lchan. */</span><br><span style="color: hsl(120, 100%, 40%);">+                } else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      /* Failure before Immediate Assignment message, send a reject. */</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOG_LCHAN(lchan, LOGL_NOTICE, "Tx Immediate Assignment Reject (%s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                lchan->last_error ? : "unknown error");</span><br><span style="color: hsl(120, 100%, 40%);">+                        rsl_tx_imm_ass_rej(lchan->ts->trx->bts, lchan->rqd_ref);</span><br><span style="color: hsl(120, 100%, 40%);">+          }</span><br><span>            break;</span><br><span> </span><br><span>   case FOR_ASSIGNMENT:</span><br><span>@@ -713,6 +721,7 @@</span><br><span>                   return;</span><br><span>              }</span><br><span>            LOG_LCHAN(lchan, LOGL_DEBUG, "Tx RR Immediate Assignment\n");</span><br><span style="color: hsl(120, 100%, 40%);">+               lchan->activate.immediate_assignment_sent = true;</span><br><span>                 break;</span><br><span> </span><br><span>   case FOR_ASSIGNMENT:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11940">change 11940</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/11940"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I9ad094d272254d7aee9b0a676201d4ed8cd727ca </div>
<div style="display:none"> Gerrit-Change-Number: 11940 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </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>