diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h index 18608845..babe4206 100644 --- a/Transceiver52M/Transceiver.h +++ b/Transceiver52M/Transceiver.h @@ -162,9 +162,9 @@ struct ctrl_sock_state { } ~ctrl_sock_state() { if(conn_bfd.fd >= 0) { + osmo_fd_unregister(&conn_bfd); close(conn_bfd.fd); conn_bfd.fd = -1; - osmo_fd_unregister(&conn_bfd); } } }; diff --git a/Transceiver52M/device/ipc/IPCDevice.cpp b/Transceiver52M/device/ipc/IPCDevice.cpp index 8bf48364..4b4ba371 100644 --- a/Transceiver52M/device/ipc/IPCDevice.cpp +++ b/Transceiver52M/device/ipc/IPCDevice.cpp @@ -537,9 +537,9 @@ void IPCDevice::ipc_sock_close(struct ipc_per_trx_sock_state *state) LOGP(DDEV, LOGL_NOTICE, "IPC socket has LOST connection\n"); + osmo_fd_unregister(bfd); close(bfd->fd); bfd->fd = -1; - osmo_fd_unregister(bfd); /* flush the queue */ while (!llist_empty(&state->upqueue)) { diff --git a/Transceiver52M/device/ipc/ipc_sock.c b/Transceiver52M/device/ipc/ipc_sock.c index ca8e1b0f..9e8ab82b 100644 --- a/Transceiver52M/device/ipc/ipc_sock.c +++ b/Transceiver52M/device/ipc/ipc_sock.c @@ -97,9 +97,9 @@ void ipc_sock_close(struct ipc_sock_state *state) ipc_exit_requested = 1; + osmo_fd_unregister(bfd); close(bfd->fd); bfd->fd = -1; - osmo_fd_unregister(bfd); /* re-enable the generation of ACCEPT for new connections */ osmo_fd_read_enable(&state->listen_bfd);