<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-cbc/+/21926">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">message / peer FSM: fix completion detection + timeout logic<br><br>* when the message_peer FSM times out, we msut notify the message_fsm<br>* when waiting for DELETE_ACK, require all message_peer FSM instances to<br>  enter DELETE state before signaling completion<br><br>Change-Id: Ibff5e25ebb34843c4b3165329f432892ac6a6ef5<br>---<br>M src/smscb_message_fsm.c<br>M src/smscb_peer_fsm.c<br>2 files changed, 9 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/smscb_message_fsm.c b/src/smscb_message_fsm.c</span><br><span>index 48191d1..65a749b 100644</span><br><span>--- a/src/smscb_message_fsm.c</span><br><span>+++ b/src/smscb_message_fsm.c</span><br><span>@@ -66,7 +66,7 @@</span><br><span>             * timed out */</span><br><span>              llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {</span><br><span>                       if (peer_fi->state == SMSCB_S_WAIT_WRITE_ACK)</span><br><span style="color: hsl(0, 100%, 40%);">-                                break;</span><br><span style="color: hsl(120, 100%, 40%);">+                                return;</span><br><span>              }</span><br><span>            rest_it_op_set_http_result(cbcmsg->it_op, 201, "Created"); // FIXME: error cases</span><br><span>                osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span>@@ -125,7 +125,7 @@</span><br><span>     case SMSCB_E_CBSP_REPLACE_NACK:</span><br><span>              llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {</span><br><span>                       if (peer_fi->state == SMSCB_S_WAIT_REPLACE_ACK)</span><br><span style="color: hsl(0, 100%, 40%);">-                              break;</span><br><span style="color: hsl(120, 100%, 40%);">+                                return;</span><br><span>              }</span><br><span>            rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases</span><br><span>             osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span>@@ -153,7 +153,7 @@</span><br><span>     case SMSCB_E_CBSP_STATUS_NACK:</span><br><span>               llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {</span><br><span>                       if (peer_fi->state == SMSCB_S_WAIT_STATUS_ACK)</span><br><span style="color: hsl(0, 100%, 40%);">-                               break;</span><br><span style="color: hsl(120, 100%, 40%);">+                                return;</span><br><span>              }</span><br><span>            rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases</span><br><span>             osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span>@@ -180,8 +180,8 @@</span><br><span>     case SMSCB_E_CBSP_DELETE_ACK:</span><br><span>        case SMSCB_E_CBSP_DELETE_NACK:</span><br><span>               llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {</span><br><span style="color: hsl(0, 100%, 40%);">-                  if (peer_fi->state == SMSCB_S_WAIT_DELETE_ACK)</span><br><span style="color: hsl(0, 100%, 40%);">-                               break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        if (peer_fi->state != SMSCB_S_DELETED)</span><br><span style="color: hsl(120, 100%, 40%);">+                             return;</span><br><span>              }</span><br><span>            rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases</span><br><span>             osmo_fsm_inst_state_chg(fi, SMSCB_S_DELETED, 0, 0);</span><br><span>diff --git a/src/smscb_peer_fsm.c b/src/smscb_peer_fsm.c</span><br><span>index 69b4418..341c205 100644</span><br><span>--- a/src/smscb_peer_fsm.c</span><br><span>+++ b/src/smscb_peer_fsm.c</span><br><span>@@ -434,15 +434,19 @@</span><br><span>     switch (fi->T) {</span><br><span>  case T_WAIT_WRITE_ACK:</span><br><span>               osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_WRITE_NACK, NULL);</span><br><span>           break;</span><br><span>       case T_WAIT_REPLACE_ACK:</span><br><span>             osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_REPLACE_NACK, NULL);</span><br><span>                 break;</span><br><span>       case T_WAIT_STATUS_ACK:</span><br><span>              osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_STATUS_NACK, NULL);</span><br><span>          break;</span><br><span>       case T_WAIT_DELETE_ACK:</span><br><span>              osmo_fsm_inst_state_chg(fi, SMSCB_S_DELETED, 0, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+           osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_DELETE_NACK, NULL);</span><br><span>          break;</span><br><span>       default:</span><br><span>             OSMO_ASSERT(0);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-cbc/+/21926">change 21926</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-cbc/+/21926"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-cbc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibff5e25ebb34843c4b3165329f432892ac6a6ef5 </div>
<div style="display:none"> Gerrit-Change-Number: 21926 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>