<p>Pau Espin Pedrol has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/14075">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmux: Fix CID release for non-enabled connections<br><br>Change-Id: If65c70b421476776e20233733722d72aa26d69a8<br>---<br>M include/osmocom/mgcp/osmux.h<br>M src/libosmo-mgcp/mgcp_conn.c<br>M src/libosmo-mgcp/mgcp_osmux.c<br>3 files changed, 15 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/75/14075/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/mgcp/osmux.h b/include/osmocom/mgcp/osmux.h</span><br><span>index eb05610..69ba3d0 100644</span><br><span>--- a/include/osmocom/mgcp/osmux.h</span><br><span>+++ b/include/osmocom/mgcp/osmux.h</span><br><span>@@ -14,7 +14,7 @@</span><br><span> int osmux_init(int role, struct mgcp_config *cfg);</span><br><span> int osmux_enable_conn(struct mgcp_endpoint *endp, struct mgcp_conn_rtp *conn,</span><br><span>                struct in_addr *addr, uint16_t port);</span><br><span style="color: hsl(0, 100%, 40%);">-void osmux_disable_conn(struct mgcp_conn_rtp *conn);</span><br><span style="color: hsl(120, 100%, 40%);">+void conn_osmux_disable(struct mgcp_conn_rtp *conn);</span><br><span> int conn_osmux_allocate_cid(struct mgcp_conn_rtp *conn, int osmux_cid);</span><br><span> void conn_osmux_release_cid(struct mgcp_conn_rtp *conn);</span><br><span> int osmux_xfrm_to_osmux(char *buf, int buf_len, struct mgcp_conn_rtp *conn);</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c</span><br><span>index 5300351..232dfee 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_conn.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_conn.c</span><br><span>@@ -125,7 +125,8 @@</span><br><span> /* Cleanup rtp connection struct */</span><br><span> static void mgcp_rtp_conn_cleanup(struct mgcp_conn_rtp *conn_rtp)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        osmux_disable_conn(conn_rtp);</span><br><span style="color: hsl(120, 100%, 40%);">+ if(mgcp_conn_rtp_is_osmux(conn_rtp))</span><br><span style="color: hsl(120, 100%, 40%);">+          conn_osmux_disable(conn_rtp);</span><br><span>        mgcp_free_rtp_port(&conn_rtp->end);</span><br><span>   rate_ctr_group_free(conn_rtp->rate_ctr_group);</span><br><span> }</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_osmux.c b/src/libosmo-mgcp/mgcp_osmux.c</span><br><span>index 3b788b6..38657ee 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_osmux.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_osmux.c</span><br><span>@@ -487,26 +487,25 @@</span><br><span> </span><br><span> /*! disable OSXMUX circuit for a specified connection.</span><br><span>  *  \param[in] conn connection to disable */</span><br><span style="color: hsl(0, 100%, 40%);">-void osmux_disable_conn(struct mgcp_conn_rtp *conn)</span><br><span style="color: hsl(120, 100%, 40%);">+void conn_osmux_disable(struct mgcp_conn_rtp *conn)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      if (!conn)</span><br><span style="color: hsl(0, 100%, 40%);">-              return;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (conn->osmux.state != OSMUX_STATE_ENABLED)</span><br><span style="color: hsl(0, 100%, 40%);">-                return;</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_ASSERT(conn->osmux.state != OSMUX_STATE_DISABLED);</span><br><span> </span><br><span>       LOGPCONN(conn->conn, DLMGCP, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-              "Releasing connection %s using Osmux CID %u\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               conn->conn->id, conn->osmux.cid);</span><br><span style="color: hsl(120, 100%, 40%);">+            "Releasing connection using Osmux CID %u\n", conn->osmux.cid);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* We are closing, we don't need pending RTP packets to be transmitted */</span><br><span style="color: hsl(0, 100%, 40%);">-   osmux_xfrm_output_set_tx_cb(&conn->osmux.out, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-       osmux_xfrm_output_flush(&conn->osmux.out);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (conn->osmux.state == OSMUX_STATE_ENABLED) {</span><br><span style="color: hsl(120, 100%, 40%);">+            /* We are closing, we don't need pending RTP packets to be transmitted */</span><br><span style="color: hsl(120, 100%, 40%);">+         osmux_xfrm_output_set_tx_cb(&conn->osmux.out, NULL, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+             osmux_xfrm_output_flush(&conn->osmux.out);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   osmux_xfrm_input_close_circuit(conn->osmux.in, conn->osmux.cid);</span><br><span style="color: hsl(0, 100%, 40%);">-  conn->osmux.state = OSMUX_STATE_DISABLED;</span><br><span style="color: hsl(120, 100%, 40%);">+          osmux_xfrm_input_close_circuit(conn->osmux.in, conn->osmux.cid);</span><br><span style="color: hsl(120, 100%, 40%);">+                conn->osmux.state = OSMUX_STATE_DISABLED;</span><br><span style="color: hsl(120, 100%, 40%);">+          conn_osmux_release_cid(conn);</span><br><span style="color: hsl(120, 100%, 40%);">+         osmux_handle_put(conn->osmux.in);</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span>    conn_osmux_release_cid(conn);</span><br><span style="color: hsl(0, 100%, 40%);">-   osmux_handle_put(conn->osmux.in);</span><br><span> }</span><br><span> </span><br><span> /*! relase OSXMUX cid, that had been allocated to this connection.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14075">change 14075</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/14075"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: If65c70b421476776e20233733722d72aa26d69a8 </div>
<div style="display:none"> Gerrit-Change-Number: 14075 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>