diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/msc_conn.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/msc_conn.c b/src/msc_conn.c index 452d408..edfd521 100644 --- a/src/msc_conn.c +++ b/src/msc_conn.c @@ -55,9 +55,12 @@ void msc_close_connection(struct msc_connection *fw) { struct osmo_fd *bfd = &fw->msc_connection.bfd; - close(bfd->fd); - osmo_fd_unregister(bfd); - bfd->fd = -1; + if (bfd->fd >= 0) { + close(bfd->fd); + osmo_fd_unregister(bfd); + bfd->fd = -1; + } + fw->msc_link_down = 1; release_bsc_resources(fw); osmo_timer_del(&fw->ping_timeout); @@ -547,6 +550,7 @@ struct msc_connection *msc_connection_create(struct bsc_data *bsc, int mgcp) msc->msc_connection.read_cb = ipaccess_a_fd_cb; msc->msc_connection.write_cb = ipaccess_write_cb; msc->msc_connection.bfd.data = msc; + msc->msc_connection.bfd.fd = -1; msc->msc_link_down = 1; /* handle the timeout */ |