<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmo-abis/+/19258">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  Hoernchen: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ipacces: Fix e1inp_line reference put in ipaccess_close<br><br>Drop the function e1inp_close_socket since it's only used by the caller<br>at hand, and it's only exported through "internal.h", so no app is using<br>it. Remove it because there's only a caller, and furthermore because<br>keeping it (and putting bfd->data==line) would introduce a layer<br>violation because the bfd->data==line is only used for ipaccess so far.<br><br>Triggering path:<br>handle_ts1_read ret=0 "Sign link vanished"<br>  ipaccess_drop<br>line->ops->sign_link_down<br>  (osmo-bsc) ipaccess_drop_oml<br>e1inp_sign_link_destroy<br>  link->ts->line->driver->close<br>ipaccess_close<br><br>Related: OS#4624<br>Change-Id: If23cc722106a9f70c998e591369a4acafa52c519<br>---<br>M include/internal.h<br>M src/e1_input.c<br>M src/input/ipaccess.c<br>3 files changed, 15 insertions(+), 23 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/internal.h b/include/internal.h</span><br><span>index c931d4f..8a5aa2e 100644</span><br><span>--- a/include/internal.h</span><br><span>+++ b/include/internal.h</span><br><span>@@ -20,13 +20,7 @@</span><br><span> struct msgb;</span><br><span> struct msgb *ipa_msg_alloc(int headroom);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * helper for internal drivers, not public</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-void e1inp_close_socket(struct e1inp_ts *ts,</span><br><span style="color: hsl(0, 100%, 40%);">-                   struct e1inp_sign_link *sign_link,</span><br><span style="color: hsl(0, 100%, 40%);">-                      struct osmo_fd *bfd);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+int e1inp_int_snd_event(struct e1inp_ts *ts, struct e1inp_sign_link *link, int evt);</span><br><span> </span><br><span> </span><br><span> #endif</span><br><span>diff --git a/src/e1_input.c b/src/e1_input.c</span><br><span>index fc0370d..df61c7b 100644</span><br><span>--- a/src/e1_input.c</span><br><span>+++ b/src/e1_input.c</span><br><span>@@ -816,8 +816,7 @@</span><br><span>     return msg;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int e1inp_int_snd_event(struct e1inp_ts *ts,</span><br><span style="color: hsl(0, 100%, 40%);">-                        struct e1inp_sign_link *link, int evt)</span><br><span style="color: hsl(120, 100%, 40%);">+int e1inp_int_snd_event(struct e1inp_ts *ts, struct e1inp_sign_link *link, int evt)</span><br><span> {</span><br><span>      struct input_signal_data isd;</span><br><span>        isd.line = ts->line;</span><br><span>@@ -844,19 +843,6 @@</span><br><span>       return e1inp_int_snd_event(ts, link, evt);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-void e1inp_close_socket(struct e1inp_ts *ts,</span><br><span style="color: hsl(0, 100%, 40%);">-                 struct e1inp_sign_link *sign_link,</span><br><span style="color: hsl(0, 100%, 40%);">-                      struct osmo_fd *bfd)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-   e1inp_int_snd_event(ts, sign_link, S_L_INP_TEI_DN);</span><br><span style="color: hsl(0, 100%, 40%);">-     /* the first e1inp_sign_link_destroy call closes the socket. */</span><br><span style="color: hsl(0, 100%, 40%);">- if (bfd->fd != -1) {</span><br><span style="color: hsl(0, 100%, 40%);">-         osmo_fd_unregister(bfd);</span><br><span style="color: hsl(0, 100%, 40%);">-                close(bfd->fd);</span><br><span style="color: hsl(0, 100%, 40%);">-              bfd->fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-        }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> /* register a driver with the E1 core */</span><br><span> int e1inp_driver_register(struct e1inp_driver *drv)</span><br><span> {</span><br><span>diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c</span><br><span>index 08b34a4..4d55e71 100644</span><br><span>--- a/src/input/ipaccess.c</span><br><span>+++ b/src/input/ipaccess.c</span><br><span>@@ -431,7 +431,19 @@</span><br><span> </span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return e1inp_close_socket(e1i_ts, sign_link, bfd);</span><br><span style="color: hsl(120, 100%, 40%);">+    e1inp_int_snd_event(e1i_ts, sign_link, S_L_INP_TEI_DN);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* the first e1inp_sign_link_destroy call closes the socket. */</span><br><span style="color: hsl(120, 100%, 40%);">+       if (bfd->fd != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_fd_unregister(bfd);</span><br><span style="color: hsl(120, 100%, 40%);">+              close(bfd->fd);</span><br><span style="color: hsl(120, 100%, 40%);">+            bfd->fd = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+              /* If The bfd holds a reference to e1inp_line in ->data (BSC</span><br><span style="color: hsl(120, 100%, 40%);">+                * accepted() sockets), then release it */</span><br><span style="color: hsl(120, 100%, 40%);">+            if (bfd->data == line) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   bfd->data = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+                  e1inp_line_put2(line, "ipa_bfd");</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> }</span><br><span> </span><br><span> static void timeout_ts1_write(void *data)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmo-abis/+/19258">change 19258</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/c/libosmo-abis/+/19258"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmo-abis </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: If23cc722106a9f70c998e591369a4acafa52c519 </div>
<div style="display:none"> Gerrit-Change-Number: 19258 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>