aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-07-14 21:14:34 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2020-07-15 15:39:33 +0200
commitdc55a5fa6396eae1f5f2f1d2c7af4065e41b76b3 (patch)
tree9ffac4ff39d3495b222527b091502c8052873460
parenta2ff733ac0570f70e350c8428b6f1146df07d643 (diff)
ipaccess_recvmsg: Clean up release steps upon error condition
-rw-r--r--src/input/ipaccess.c7
1 files changed, 5 insertions, 2 deletions
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 @@ static int ipaccess_rcvmsg(struct e1inp_line *line, struct msgb *msg,
}
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;
}