From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32830) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W9Hzk-0000mv-Tv for qemu-devel@nongnu.org; Fri, 31 Jan 2014 12:35:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W9Hze-0003VD-Tk for qemu-devel@nongnu.org; Fri, 31 Jan 2014 12:35:12 -0500 Received: from mail-wg0-f46.google.com ([74.125.82.46]:60917) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W9Hze-0003UR-Oy for qemu-devel@nongnu.org; Fri, 31 Jan 2014 12:35:06 -0500 Received: by mail-wg0-f46.google.com with SMTP id x12so9287790wgg.13 for ; Fri, 31 Jan 2014 09:35:06 -0800 (PST) From: Antonios Motakis Date: Fri, 31 Jan 2014 18:34:33 +0100 Message-Id: <1391189683-1602-5-git-send-email-a.motakis@virtualopensystems.com> In-Reply-To: <1391189683-1602-1-git-send-email-a.motakis@virtualopensystems.com> References: <1391189683-1602-1-git-send-email-a.motakis@virtualopensystems.com> Subject: [Qemu-devel] [PATCH v7 04/13] Add G_IO_HUP handler for socket chardev List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, snabb-devel@googlegroups.com Cc: mst@redhat.com, n.nikolaev@virtualopensystems.com, Anthony Liguori , lukego@gmail.com, Antonios Motakis , tech@virtualopensystems.com Close the chardev on receiving this event. Signed-off-by: Antonios Motakis Signed-off-by: Nikolay Nikolaev --- 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