Close the chardev on receiving this event. Signed-off-by: Antonios Motakis <a.mota...@virtualopensystems.com> Signed-off-by: Nikolay Nikolaev <n.nikol...@virtualopensystems.com> --- qemu-char.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/qemu-char.c b/qemu-char.c index c2e599e..1c34b2b 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -2643,6 +2643,20 @@ CharDriverState *qemu_chr_open_eventfd(int eventfd) } #endif +static gboolean tcp_chr_chan_close(GIOChannel *channel, GIOCondition cond, + void *opaque) +{ + CharDriverState *chr = opaque; + + if (cond == G_IO_HUP) { + if (chr->chr_close) { + chr->chr_close(chr); + } + } + + return TRUE; +} + static void tcp_chr_connect(void *opaque) { CharDriverState *chr = opaque; @@ -2652,6 +2666,7 @@ static void tcp_chr_connect(void *opaque) if (s->chan) { chr->fd_in_tag = io_add_watch_poll(s->chan, tcp_chr_read_poll, tcp_chr_read, chr); + g_io_add_watch(s->chan, G_IO_HUP, tcp_chr_chan_close, chr); } qemu_chr_be_generic_open(chr); } -- 1.8.3.2