From 5c380878d5b1c3dd677a3674b5bc0bcb4c6aef80 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Mon, 16 Apr 2018 22:25:54 +0200
Subject: 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);
}
}
--
cgit v1.2.3-70-g09d2