<p>Stefan Sperling has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/11704">View Change</a></p><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 an error code. I arbitrarily chose<br>ECONNABORTED as the error code to report in this case.<br><br>This is necessary because xua_srv_conn_cb(0 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;">git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/04/11704/1</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..7c548bb 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 = -ECONNABORTED;</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 = -ECONNABORTED;</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 = -ECONNABORTED;</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: newchange </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: 1 </div>
<div style="display:none"> Gerrit-Owner: Stefan Sperling <ssperling@sysmocom.de> </div>