From 2eb9c116d97cc5e41745caace164908abd0ce9d4 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Wed, 6 Jul 2022 16:37:54 +0200 Subject: [PATCH] Improve error handling when forwarding ECBE msg to CBSP Change-Id: Ie411409b3af8f7dd6913b522ea9ed3b58736dc9f --- src/message_handling.c | 13 ++++++++++--- src/smscb_peer_fsm.c | 10 +++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/message_handling.c b/src/message_handling.c index a8c8368..41b854a 100644 --- a/src/message_handling.c +++ b/src/message_handling.c @@ -132,9 +132,16 @@ int peer_new_cbc_message(struct cbc_peer *peer, struct cbc_message *cbcmsg) switch (peer->proto) { case CBC_PEER_PROTO_CBSP: /* skip peers without any current CBSP connection */ - if (!peer->client.cbsp) - return 0; - cbsp = cbcmsg_to_cbsp(peer, cbcmsg); + if (!peer->client.cbsp) { + LOGP(DCBSP, LOGL_NOTICE, "[%s] Tx CBSP: not connected\n", + peer->name); + return -ENOTCONN; + } + if (!(cbsp = cbcmsg_to_cbsp(peer, cbcmsg))) { + LOGP(DCBSP, LOGL_ERROR, "[%s] Tx CBSP: msg gen failed\n", + peer->name); + return -EINVAL; + } cbsp_cbc_client_tx(peer->client.cbsp, cbsp); break; default: diff --git a/src/smscb_peer_fsm.c b/src/smscb_peer_fsm.c index 510c198..cc91e39 100644 --- a/src/smscb_peer_fsm.c +++ b/src/smscb_peer_fsm.c @@ -279,13 +279,17 @@ static void cbsp_append_cell_list(struct osmo_cbsp_cell_list *out, void *ctx, static void smscb_p_fsm_init(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct cbc_message_peer *mp = (struct cbc_message_peer *) fi->priv; + int rc; switch (event) { case SMSCB_E_CREATE: /* send it to peer */ - peer_new_cbc_message(mp->peer, mp->cbcmsg); - /* wait for peers' response */ - osmo_fsm_inst_state_chg(fi, SMSCB_S_WAIT_WRITE_ACK, 10, T_WAIT_WRITE_ACK); + rc = peer_new_cbc_message(mp->peer, mp->cbcmsg); + if (rc == 0) { + /* wait for peers' response */ + osmo_fsm_inst_state_chg(fi, SMSCB_S_WAIT_WRITE_ACK, 10, + T_WAIT_WRITE_ACK); + } break; default: OSMO_ASSERT(0);