This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-cbc/+/21926 )
Change subject: message / peer FSM: fix completion detection + timeout logic
......................................................................
message / peer FSM: fix completion detection + timeout logic
* when the message_peer FSM times out, we msut notify the message_fsm
* when waiting for DELETE_ACK, require all message_peer FSM instances to
enter DELETE state before signaling completion
Change-Id: Ibff5e25ebb34843c4b3165329f432892ac6a6ef5
---
M src/smscb_message_fsm.c
M src/smscb_peer_fsm.c
2 files changed, 9 insertions(+), 5 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-cbc refs/changes/26/21926/1
diff --git a/src/smscb_message_fsm.c b/src/smscb_message_fsm.c
index 48191d1..65a749b 100644
--- a/src/smscb_message_fsm.c
+++ b/src/smscb_message_fsm.c
@@ -66,7 +66,7 @@
* timed out */
llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {
if (peer_fi->state == SMSCB_S_WAIT_WRITE_ACK)
- break;
+ return;
}
rest_it_op_set_http_result(cbcmsg->it_op, 201, "Created"); // FIXME: error cases
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
@@ -125,7 +125,7 @@
case SMSCB_E_CBSP_REPLACE_NACK:
llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {
if (peer_fi->state == SMSCB_S_WAIT_REPLACE_ACK)
- break;
+ return;
}
rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
@@ -153,7 +153,7 @@
case SMSCB_E_CBSP_STATUS_NACK:
llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {
if (peer_fi->state == SMSCB_S_WAIT_STATUS_ACK)
- break;
+ return;
}
rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
@@ -180,8 +180,8 @@
case SMSCB_E_CBSP_DELETE_ACK:
case SMSCB_E_CBSP_DELETE_NACK:
llist_for_each_entry(peer_fi, &fi->proc.children, proc.child) {
- if (peer_fi->state == SMSCB_S_WAIT_DELETE_ACK)
- break;
+ if (peer_fi->state != SMSCB_S_DELETED)
+ return;
}
rest_it_op_set_http_result(cbcmsg->it_op, 200, "OK"); // FIXME: error cases
osmo_fsm_inst_state_chg(fi, SMSCB_S_DELETED, 0, 0);
diff --git a/src/smscb_peer_fsm.c b/src/smscb_peer_fsm.c
index 69b4418..341c205 100644
--- a/src/smscb_peer_fsm.c
+++ b/src/smscb_peer_fsm.c
@@ -434,15 +434,19 @@
switch (fi->T) {
case T_WAIT_WRITE_ACK:
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
+ osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_WRITE_NACK, NULL);
break;
case T_WAIT_REPLACE_ACK:
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
+ osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_REPLACE_NACK, NULL);
break;
case T_WAIT_STATUS_ACK:
osmo_fsm_inst_state_chg(fi, SMSCB_S_ACTIVE, 0, 0);
+ osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_STATUS_NACK, NULL);
break;
case T_WAIT_DELETE_ACK:
osmo_fsm_inst_state_chg(fi, SMSCB_S_DELETED, 0, 0);
+ osmo_fsm_inst_dispatch(fi->proc.parent, SMSCB_E_CBSP_DELETE_NACK, NULL);
break;
default:
OSMO_ASSERT(0);
--
To view, visit https://gerrit.osmocom.org/c/osmo-cbc/+/21926
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-cbc
Gerrit-Branch: master
Gerrit-Change-Id: Ibff5e25ebb34843c4b3165329f432892ac6a6ef5
Gerrit-Change-Number: 21926
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210103/d29d0447/attachment.htm>