<p>Neels Hofmeyr has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13945">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">call_leg: remove unused event MSC_EV_CALL_LEG_RTP_RELEASED<br><br>The event is actually never dispatched and useless, because when an RTP stream<br>releases, the call_leg terminates directly anyway (which wasn't apparent when<br>starting to design the call_leg FSM yet).<br><br>Change-Id: I6b2fc1225c960fa2f7c46adf241520217a07821c<br>---<br>M include/osmocom/msc/call_leg.h<br>M include/osmocom/msc/msc_roles.h<br>M src/libmsc/call_leg.c<br>M src/libmsc/msc_a.c<br>M src/libmsc/msc_i.c<br>M src/libmsc/msc_t.c<br>6 files changed, 8 insertions(+), 45 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/45/13945/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/msc/call_leg.h b/include/osmocom/msc/call_leg.h</span><br><span>index b8126e8..61107ee 100644</span><br><span>--- a/include/osmocom/msc/call_leg.h</span><br><span>+++ b/include/osmocom/msc/call_leg.h</span><br><span>@@ -36,7 +36,6 @@</span><br><span> </span><br><span> uint32_t parent_event_rtp_addr_available;</span><br><span> uint32_t parent_event_rtp_complete;</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_released;</span><br><span> </span><br><span> /* For internal MNCC, if RTP addresses for endpoints become assigned by the MGW, implicitly notify the other</span><br><span> * call leg's RTP_TO_CN side rtp_stream with rtp_stream_remote_addr_available(). */</span><br><span>@@ -58,15 +57,13 @@</span><br><span> struct call_leg *call_leg_alloc(struct osmo_fsm_inst *parent_fi,</span><br><span> uint32_t parent_event_term,</span><br><span> uint32_t parent_event_rtp_addr_available,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_complete,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_released);</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t parent_event_rtp_complete);</span><br><span> </span><br><span> void call_leg_reparent(struct call_leg *cl,</span><br><span> struct osmo_fsm_inst *parent_fi,</span><br><span> uint32_t parent_event_term,</span><br><span> uint32_t parent_event_rtp_addr_available,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_complete,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_released);</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t parent_event_rtp_complete);</span><br><span> </span><br><span> int call_leg_local_bridge(struct call_leg *cl1, uint32_t call_id1, struct gsm_trans *trans1,</span><br><span> struct call_leg *cl2, uint32_t call_id2, struct gsm_trans *trans2);</span><br><span>diff --git a/include/osmocom/msc/msc_roles.h b/include/osmocom/msc/msc_roles.h</span><br><span>index a1fab2f..b22bc7b 100644</span><br><span>--- a/include/osmocom/msc/msc_roles.h</span><br><span>+++ b/include/osmocom/msc/msc_roles.h</span><br><span>@@ -148,7 +148,6 @@</span><br><span> </span><br><span> MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,</span><br><span> MSC_EV_CALL_LEG_RTP_COMPLETE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_RELEASED,</span><br><span> MSC_EV_CALL_LEG_TERM,</span><br><span> </span><br><span> /* MNCC has told us to RTP_CREATE, but local RTP port has not yet been set up.</span><br><span>diff --git a/src/libmsc/call_leg.c b/src/libmsc/call_leg.c</span><br><span>index cb7e6ea..1b7db2b 100644</span><br><span>--- a/src/libmsc/call_leg.c</span><br><span>+++ b/src/libmsc/call_leg.c</span><br><span>@@ -67,8 +67,7 @@</span><br><span> struct call_leg *call_leg_alloc(struct osmo_fsm_inst *parent_fi,</span><br><span> uint32_t parent_event_term,</span><br><span> uint32_t parent_event_rtp_addr_available,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_complete,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_released)</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t parent_event_rtp_complete)</span><br><span> {</span><br><span> struct call_leg *cl;</span><br><span> struct osmo_fsm_inst *fi = osmo_fsm_inst_alloc_child(&call_leg_fsm, parent_fi, parent_event_term);</span><br><span>@@ -82,7 +81,6 @@</span><br><span> .fi = fi,</span><br><span> .parent_event_rtp_addr_available = parent_event_rtp_addr_available,</span><br><span> .parent_event_rtp_complete = parent_event_rtp_complete,</span><br><span style="color: hsl(0, 100%, 40%);">- .parent_event_rtp_released = parent_event_rtp_released,</span><br><span> };</span><br><span> </span><br><span> return cl;</span><br><span>@@ -92,8 +90,7 @@</span><br><span> struct osmo_fsm_inst *new_parent_fi,</span><br><span> uint32_t parent_event_term,</span><br><span> uint32_t parent_event_rtp_addr_available,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_complete,</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t parent_event_rtp_released)</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t parent_event_rtp_complete)</span><br><span> {</span><br><span> LOG_CALL_LEG(cl, LOGL_DEBUG, "Reparenting from parent %s to parent %s\n",</span><br><span> cl->fi->proc.parent->name, new_parent_fi->name);</span><br><span>@@ -101,7 +98,6 @@</span><br><span> talloc_steal(new_parent_fi, cl->fi);</span><br><span> cl->parent_event_rtp_addr_available = parent_event_rtp_addr_available;</span><br><span> cl->parent_event_rtp_complete = parent_event_rtp_complete;</span><br><span style="color: hsl(0, 100%, 40%);">- cl->parent_event_rtp_released = parent_event_rtp_released;</span><br><span> }</span><br><span> </span><br><span> static int call_leg_fsm_timer_cb(struct osmo_fsm_inst *fi)</span><br><span>diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c</span><br><span>index 5baed54..77dd43d 100644</span><br><span>--- a/src/libmsc/msc_a.c</span><br><span>+++ b/src/libmsc/msc_a.c</span><br><span>@@ -546,28 +546,15 @@</span><br><span> </span><br><span> static void msc_a_cleanup_rtp_streams(struct msc_a *msc_a, uint32_t event, void *data)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct rtp_stream *rtps;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> switch (event) {</span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span style="color: hsl(0, 100%, 40%);">- rtps = data;</span><br><span style="color: hsl(0, 100%, 40%);">- if (msc_a->cc.mncc_forwarding_to_remote_ran</span><br><span style="color: hsl(0, 100%, 40%);">- && msc_a->cc.mncc_forwarding_to_remote_ran->rtps == rtps)</span><br><span style="color: hsl(0, 100%, 40%);">- msc_a->cc.mncc_forwarding_to_remote_ran->rtps = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">- if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran</span><br><span style="color: hsl(0, 100%, 40%);">- && msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps == rtps)</span><br><span style="color: hsl(0, 100%, 40%);">- msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">- return;</span><br><span> </span><br><span> case MSC_EV_CALL_LEG_TERM:</span><br><span> msc_a->cc.call_leg = NULL;</span><br><span> if (msc_a->cc.mncc_forwarding_to_remote_ran)</span><br><span> msc_a->cc.mncc_forwarding_to_remote_ran->rtps = NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran) {</span><br><span style="color: hsl(0, 100%, 40%);">- fprintf(stderr, "FOCKEN %p\n", msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran)</span><br><span> msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span> return;</span><br><span> </span><br><span> case MSC_MNCC_EV_CALL_ENDED:</span><br><span>@@ -633,7 +620,6 @@</span><br><span> /* Nothing to do. */</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span> case MSC_MNCC_EV_CALL_ENDED:</span><br><span> /* Cleaned up above */</span><br><span> return;</span><br><span>@@ -765,7 +751,6 @@</span><br><span> /* Already releasing */</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span> case MSC_EV_CALL_LEG_TERM:</span><br><span> case MSC_MNCC_EV_CALL_ENDED:</span><br><span> /* RTP streams cleaned up above */</span><br><span>@@ -819,7 +804,6 @@</span><br><span> OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),</span><br><span>@@ -934,7 +918,6 @@</span><br><span> | S(MSC_A_EV_UNUSED)</span><br><span> | S(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE)</span><br><span> | S(MSC_EV_CALL_LEG_RTP_COMPLETE)</span><br><span style="color: hsl(0, 100%, 40%);">- | S(MSC_EV_CALL_LEG_RTP_RELEASED)</span><br><span> | S(MSC_EV_CALL_LEG_TERM)</span><br><span> | S(MSC_MNCC_EV_CALL_ENDED)</span><br><span> | S(MSC_A_EV_HANDOVER_REQUIRED)</span><br><span>@@ -950,7 +933,6 @@</span><br><span> | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)</span><br><span> | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)</span><br><span> | S(MSC_A_EV_UNUSED)</span><br><span style="color: hsl(0, 100%, 40%);">- | S(MSC_EV_CALL_LEG_RTP_RELEASED)</span><br><span> | S(MSC_EV_CALL_LEG_TERM)</span><br><span> | S(MSC_MNCC_EV_CALL_ENDED)</span><br><span> ,</span><br><span>@@ -1590,8 +1572,7 @@</span><br><span> cl = msc_a->cc.call_leg = call_leg_alloc(msc_a->c.fi,</span><br><span> MSC_EV_CALL_LEG_TERM,</span><br><span> MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_COMPLETE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_RELEASED);</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_EV_CALL_LEG_RTP_COMPLETE);</span><br><span> OSMO_ASSERT(cl);</span><br><span> </span><br><span> /* HACK: We put the connection in loopback mode at the beginnig to</span><br><span>diff --git a/src/libmsc/msc_i.c b/src/libmsc/msc_i.c</span><br><span>index 05df9cb..f7aab0d 100644</span><br><span>--- a/src/libmsc/msc_i.c</span><br><span>+++ b/src/libmsc/msc_i.c</span><br><span>@@ -278,7 +278,6 @@</span><br><span> OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),</span><br><span>diff --git a/src/libmsc/msc_t.c b/src/libmsc/msc_t.c</span><br><span>index c6bba47..8eefccc 100644</span><br><span>--- a/src/libmsc/msc_t.c</span><br><span>+++ b/src/libmsc/msc_t.c</span><br><span>@@ -359,8 +359,7 @@</span><br><span> msc_t->inter_msc.call_leg = call_leg_alloc(msc_t->c.fi,</span><br><span> MSC_EV_CALL_LEG_TERM,</span><br><span> MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_COMPLETE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_RELEASED);</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_EV_CALL_LEG_RTP_COMPLETE);</span><br><span> if (!msc_t->inter_msc.call_leg</span><br><span> || call_leg_ensure_ci(msc_t->inter_msc.call_leg, RTP_TO_RAN, msc_t->inter_msc.callref, NULL, NULL, NULL)</span><br><span> || call_leg_ensure_ci(msc_t->inter_msc.call_leg, RTP_TO_CN, msc_t->inter_msc.callref, NULL, NULL, NULL)) {</span><br><span>@@ -391,7 +390,6 @@</span><br><span> msc_t_send_stored_ho_request(msc_t);</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span> case MSC_EV_CALL_LEG_TERM:</span><br><span> msc_t->inter_msc.call_leg = NULL;</span><br><span> msc_t_error("Failed to set up MGW endpoint\n");</span><br><span>@@ -550,7 +548,6 @@</span><br><span> msc_t_down_l2_co(msc_t, an_apdu, false);</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span> case MSC_EV_CALL_LEG_TERM:</span><br><span> msc_t->inter_msc.call_leg = NULL;</span><br><span> msc_t_error("Failed to set up MGW endpoint\n");</span><br><span>@@ -609,8 +606,7 @@</span><br><span> msc_i->c.fi,</span><br><span> MSC_EV_CALL_LEG_TERM,</span><br><span> MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_COMPLETE,</span><br><span style="color: hsl(0, 100%, 40%);">- MSC_EV_CALL_LEG_RTP_RELEASED);</span><br><span style="color: hsl(120, 100%, 40%);">+ MSC_EV_CALL_LEG_RTP_COMPLETE);</span><br><span> </span><br><span> /* msc_i_set_ran_conn() properly "steals" the ran_conn from msc_t */</span><br><span> msc_i_set_ran_conn(msc_i, msc_t->ran_conn);</span><br><span>@@ -657,7 +653,6 @@</span><br><span> msc_t_down_l2_co(msc_t, an_apdu, false);</span><br><span> return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- case MSC_EV_CALL_LEG_RTP_RELEASED:</span><br><span> case MSC_EV_CALL_LEG_TERM:</span><br><span> msc_t->inter_msc.call_leg = NULL;</span><br><span> msc_t_error("Failed to set up MGW endpoint\n");</span><br><span>@@ -795,7 +790,6 @@</span><br><span> .action = msc_t_fsm_wait_local_rtp,</span><br><span> .in_event_mask = 0</span><br><span> | S(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE)</span><br><span style="color: hsl(0, 100%, 40%);">- | S(MSC_EV_CALL_LEG_RTP_RELEASED)</span><br><span> | S(MSC_EV_CALL_LEG_TERM)</span><br><span> | S(MSC_MNCC_EV_CALL_ENDED)</span><br><span> | S(MSC_T_EV_CN_CLOSE)</span><br><span>@@ -810,7 +804,6 @@</span><br><span> .in_event_mask = 0</span><br><span> | S(MSC_EV_FROM_RAN_UP_L2)</span><br><span> | S(MSC_EV_FROM_RAN_CONN_RELEASED)</span><br><span style="color: hsl(0, 100%, 40%);">- | S(MSC_EV_CALL_LEG_RTP_RELEASED)</span><br><span> | S(MSC_EV_CALL_LEG_TERM)</span><br><span> | S(MSC_MNCC_EV_CALL_ENDED)</span><br><span> | S(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)</span><br><span>@@ -827,7 +820,6 @@</span><br><span> .in_event_mask = 0</span><br><span> | S(MSC_EV_FROM_RAN_UP_L2)</span><br><span> | S(MSC_EV_FROM_RAN_CONN_RELEASED)</span><br><span style="color: hsl(0, 100%, 40%);">- | S(MSC_EV_CALL_LEG_RTP_RELEASED)</span><br><span> | S(MSC_EV_CALL_LEG_TERM)</span><br><span> | S(MSC_MNCC_EV_CALL_ENDED)</span><br><span> | S(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)</span><br><span>@@ -841,7 +833,6 @@</span><br><span> OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),</span><br><span> OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),</span><br><span> OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13945">change 13945</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13945"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I6b2fc1225c960fa2f7c46adf241520217a07821c </div>
<div style="display:none"> Gerrit-Change-Number: 13945 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>