ipaccess_recvmsg: Clean up release steps upon error condition
Related: OS#4624
Change-Id: I47a3e477d6861620a741193d3d3d3e286836fd44
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index 3ff59f4..8a7142d 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -330,12 +330,15 @@
}
return 0;
err:
- osmo_fd_unregister(bfd);
if (bfd->fd != -1) {
+ osmo_fd_unregister(bfd);
close(bfd->fd);
bfd->fd = -1;
+ /* This is a BSC accepted socket, bfd->data holds a reference to line, drop it */
+ OSMO_ASSERT(bfd->data == line);
+ bfd->data = NULL;
+ e1inp_line_put2(line, "ipa_bfd");
}
- e1inp_line_put2(line, "ipa_bfd");
return -1;
}