diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-07-14 21:14:34 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-07-15 15:39:33 +0200 |
commit | dc55a5fa6396eae1f5f2f1d2c7af4065e41b76b3 (patch) | |
tree | 9ffac4ff39d3495b222527b091502c8052873460 /src | |
parent | a2ff733ac0570f70e350c8428b6f1146df07d643 (diff) |
ipaccess_recvmsg: Clean up release steps upon error condition
Related: OS#4624
Change-Id: I47a3e477d6861620a741193d3d3d3e286836fd44
Diffstat (limited to 'src')
-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; } |