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