From 5c380878d5b1c3dd677a3674b5bc0bcb4c6aef80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Mon, 16 Apr 2018 22:25:54 +0200 Subject: [PATCH] Better fix for EOF handling with WebSockets Used to spin. --- json-rpc-shell.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/json-rpc-shell.c b/json-rpc-shell.c index 076e53f..716e74c 100644 --- a/json-rpc-shell.c +++ b/json-rpc-shell.c @@ -3238,16 +3238,13 @@ on_tty_readable (EV_P_ ev_io *handle, int revents) { (void) handle; - static bool readline_reentrancy_lock; - if (readline_reentrancy_lock) - return; - struct app_context *ctx = ev_userdata (loop); if (revents & EV_READ) { - readline_reentrancy_lock = true; + // rl_callback_read_char() is not reentrant, may happen on EOF + ev_io_stop (EV_DEFAULT_ &ctx->tty_watcher); ctx->input->vtable->on_tty_readable (ctx->input); - readline_reentrancy_lock = false; + ev_io_start (EV_DEFAULT_ &ctx->tty_watcher); } }