From e1f08c9c1c9e13ec6ed228bca53532f3a5c149f6 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Sun, 15 Aug 2021 21:23:32 +0200 Subject: [PATCH] Fix assert hit next time after dispatch EV_DEMAND_OF_EMISSION failed --- src/conn_rtu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/conn_rtu.c b/src/conn_rtu.c index f2eaeb6..91a4129 100644 --- a/src/conn_rtu.c +++ b/src/conn_rtu.c @@ -345,11 +345,17 @@ static bool osmo_modbus_conn_rtu_is_connected(struct osmo_modbus_conn* conn) static int osmo_modbus_conn_rtu_tx_prim(struct osmo_modbus_conn* conn, struct osmo_modbus_prim *prim) { struct osmo_modbus_conn_rtu* rtu = (struct osmo_modbus_conn_rtu*) conn->proto; + int rc; OSMO_ASSERT(!rtu->tx_msg); rtu->tx_msg = prim2rtu(prim); - return osmo_fsm_inst_dispatch(rtu->fi, RTU_TRANSMIT_EV_DEMAND_OF_EMISSION, NULL); + rc = osmo_fsm_inst_dispatch(rtu->fi, RTU_TRANSMIT_EV_DEMAND_OF_EMISSION, NULL); + if (rc < 0) { + msgb_free(rtu->tx_msg); + rtu->tx_msg = NULL; + } + return rc; } static void osmo_modbus_conn_rtu_free(struct osmo_modbus_conn* conn)