Remove any registered callbacks if a frontend is detached.
CC: <[email protected]>
Signed-off-by: Amit Shah <[email protected]>
---
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