Remove any registered callbacks if a frontend is detached. CC: <qemu-sta...@nongnu.org> Signed-off-by: Amit Shah <amit.s...@redhat.com> --- qemu-char.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/qemu-char.c b/qemu-char.c index befecf2..4b26ff9 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -2198,6 +2198,16 @@ typedef struct { int max_size; } NetCharDriver; +static void udp_chr_detach(CharDriverState *chr) +{ + NetCharDriver *s = chr->opaque; + + if (s->tag) { + io_remove_watch_poll(s->tag); + s->tag = 0; + } +} + static int udp_chr_write(CharDriverState *chr, const uint8_t *buf, int len) { NetCharDriver *s = chr->opaque; @@ -2309,6 +2319,7 @@ static CharDriverState *qemu_chr_open_udp_fd(int fd) chr->chr_write = udp_chr_write; chr->chr_update_read_handler = udp_chr_update_read_handler; chr->chr_close = udp_chr_close; + chr->chr_detach = udp_chr_detach; /* be isn't opened until we get a connection */ chr->explicit_be_open = true; return chr; -- 1.8.3.1