Call osmo_fd_unregister() before closing and changing bfd->fd

Change-Id: Iffc7d89166be1cf3cd1f8c3effe90f04d5c5a9c1
diff --git a/Transceiver52M/Transceiver.h b/Transceiver52M/Transceiver.h
index 1860884..babe420 100644
--- a/Transceiver52M/Transceiver.h
+++ b/Transceiver52M/Transceiver.h
@@ -162,9 +162,9 @@
   }
   ~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 8bf4836..4b4ba37 100644
--- a/Transceiver52M/device/ipc/IPCDevice.cpp
+++ b/Transceiver52M/device/ipc/IPCDevice.cpp
@@ -537,9 +537,9 @@
 
 	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 ca8e1b0..9e8ab82 100644
--- a/Transceiver52M/device/ipc/ipc_sock.c
+++ b/Transceiver52M/device/ipc/ipc_sock.c
@@ -97,9 +97,9 @@
 
 	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);