Improve error handling when forwarding ECBE msg to CBSP

Change-Id: Ie411409b3af8f7dd6913b522ea9ed3b58736dc9f
This commit is contained in:
Pau Espin Pedrol
2022-07-06 16:37:54 +02:00
parent 8dc5648176
commit 2eb9c116d9
2 changed files with 17 additions and 6 deletions

View File

@@ -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:

View File

@@ -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);