diff --git a/src/rspro_client_fsm.c b/src/rspro_client_fsm.c index c8d9f4e..facb0f2 100644 --- a/src/rspro_client_fsm.c +++ b/src/rspro_client_fsm.c @@ -59,6 +59,8 @@ int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro) { struct msgb *msg = rspro_enc_msg(rspro); if (!msg) { + LOGP(DMAIN, LOGL_ERROR, "Error encoding RSPRO: %s\n", rspro_msgt_name(rspro)); + osmo_log_backtrace(DMAIN, LOGL_ERROR); ASN_STRUCT_FREE(asn_DEF_RsproPDU, rspro); return -1; } @@ -68,6 +70,11 @@ int ipa_client_conn_send_rspro(struct ipa_client_conn *ipa, RsproPDU_t *rspro) int server_conn_send_rspro(struct rspro_server_conn *srvc, RsproPDU_t *rspro) { + if (!rspro) { + LOGPFSML(srvc->fi, LOGL_ERROR, "Attempt to transmit NULL\n"); + osmo_log_backtrace(DMAIN, LOGL_ERROR); + return -EINVAL; + } LOGPFSM(srvc->fi, "Tx RSPRO %s\n", rspro_msgt_name(rspro)); return ipa_client_conn_send_rspro(srvc->conn, rspro); } diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c index 3ad257f..b2bcb79 100644 --- a/src/server/rspro_server.c +++ b/src/server/rspro_server.c @@ -44,12 +44,20 @@ static RsproPDU_t *slotmap2RemoveMappingReq(const struct slot_mapping *slotmap) static void client_conn_send(struct rspro_client_conn *conn, RsproPDU_t *pdu) { - struct msgb *msg_tx = rspro_enc_msg(pdu); - if (!msg_tx) { - ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu); + if (!pdu) { + LOGPFSML(conn->fi, LOGL_ERROR, "Attempt to transmit NULL\n"); + osmo_log_backtrace(DMAIN, LOGL_ERROR); return; } LOGPFSM(conn->fi, "Tx RSPRO %s\n", rspro_msgt_name(pdu)); + + struct msgb *msg_tx = rspro_enc_msg(pdu); + if (!msg_tx) { + LOGPFSML(conn->fi, LOGL_ERROR, "Error encdoing RSPRO %s\n", rspro_msgt_name(pdu)); + osmo_log_backtrace(DMAIN, LOGL_ERROR); + ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu); + return; + } ipa_prepend_header_ext(msg_tx, IPAC_PROTO_EXT_RSPRO); ipa_msg_push_header(msg_tx, IPAC_PROTO_OSMO); ipa_server_conn_send(conn->peer, msg_tx);