aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--json-rpc-shell.c9
1 files 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);
}
}