<p>Stefan Sperling <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11704">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Pau Espin Pedrol: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">return error code from xua_srv_conn_cb() if conn is freed<br><br>Allow callers of xua_srv_conn_cb() to tell whether conn<br>was freed by returning error code EBADF, which is also<br>used elsewhere in osmocom programs for this purpose.<br><br>This is necessary because xua_srv_conn_cb() might be running<br>inside of a loop which checks for read and then write events<br>on the connection. If the connection is freed by xua_srv_conn_cb()<br>as part of processing a read event, callers should avoid further<br>processing of events. But if we don't return an error we are leaving<br>callers none the wiser and with a dangling conn pointer.<br><br>Change-Id: I7359667b2f25d6c45acc70049b2a4ee2f376a1df<br>Related: OS#3685<br>---<br>M src/osmo_ss7.c<br>1 file changed, 5 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c</span><br><span>index 9805b3b..f97876c 100644</span><br><span>--- a/src/osmo_ss7.c</span><br><span>+++ b/src/osmo_ss7.c</span><br><span>@@ -1424,9 +1424,11 @@</span><br><span>           __func__, rc, flags);</span><br><span>        if (rc < 0) {</span><br><span>             osmo_stream_srv_destroy(conn);</span><br><span style="color: hsl(120, 100%, 40%);">+                rc = -EBADF;</span><br><span>                 goto out;</span><br><span>    } else if (rc == 0) {</span><br><span>                osmo_stream_srv_destroy(conn);</span><br><span style="color: hsl(120, 100%, 40%);">+                rc = -EBADF;</span><br><span>                 goto out;</span><br><span>    } else {</span><br><span>             msgb_put(msg, rc);</span><br><span>@@ -1440,16 +1442,18 @@</span><br><span>                 switch (notif->sn_header.sn_type) {</span><br><span>               case SCTP_SHUTDOWN_EVENT:</span><br><span>                    osmo_stream_srv_destroy(conn);</span><br><span style="color: hsl(120, 100%, 40%);">+                        rc = -EBADF;</span><br><span>                         break;</span><br><span>               case SCTP_ASSOC_CHANGE:</span><br><span>                      if (notif->sn_assoc_change.sac_state == SCTP_RESTART)</span><br><span>                             xua_asp_send_xlm_prim_simple(asp, OSMO_XLM_PRIM_M_SCTP_RESTART,</span><br><span>                                                           PRIM_OP_INDICATION);</span><br><span style="color: hsl(120, 100%, 40%);">+                     rc = 0;</span><br><span>                      break;</span><br><span>               default:</span><br><span style="color: hsl(120, 100%, 40%);">+                      rc = 0;</span><br><span>                      break;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = 0;</span><br><span>              goto out;</span><br><span>    }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11704">change 11704</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/11704"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-sccp </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I7359667b2f25d6c45acc70049b2a4ee2f376a1df </div>
<div style="display:none"> Gerrit-Change-Number: 11704 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Stefan Sperling <ssperling@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Stefan Sperling <ssperling@sysmocom.de> </div>