aboutsummaryrefslogtreecommitdiffstats
path: root/src/vty
diff options
context:
space:
mode:
Diffstat (limited to 'src/vty')
-rw-r--r--src/vty/telnet_interface.c3
-rw-r--r--src/vty/vty.c5
2 files changed, 4 insertions, 4 deletions
diff --git a/src/vty/telnet_interface.c b/src/vty/telnet_interface.c
index 32ab6bee..0a04d158 100644
--- a/src/vty/telnet_interface.c
+++ b/src/vty/telnet_interface.c
@@ -120,7 +120,7 @@ static int client_data(struct osmo_fd *fd, unsigned int what)
}
/* vty might have been closed from vithin vty_read() */
- if (!conn->vty)
+ if (rc == -EBADFD)
return rc;
if (what & BSC_FD_WRITE) {
@@ -193,7 +193,6 @@ void vty_event(enum event event, int sock, struct vty *vty)
break;
case VTY_CLOSED:
/* vty layer is about to free() vty */
- connection->vty = NULL;
telnet_close_client(bfd);
break;
default:
diff --git a/src/vty/vty.c b/src/vty/vty.c
index 8bfc35cd..fc86bdf3 100644
--- a/src/vty/vty.c
+++ b/src/vty/vty.c
@@ -1432,9 +1432,10 @@ int vty_read(struct vty *vty)
}
/* Check status. */
- if (vty->status == VTY_CLOSE)
+ if (vty->status == VTY_CLOSE) {
vty_close(vty);
- else {
+ return -EBADFD;
+ } else {
vty_event(VTY_WRITE, vty_sock, vty);
vty_event(VTY_READ, vty_sock, vty);
}