diff options
-rw-r--r-- | src/input/ipaccess.c | 7 |
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; } |