Browse Source

char-udp: Fix initial backend open status

This patch removes the `*be_opened = false` override for the UDP chardev
backend. Since UDP is connectionless it never sends a `CHR_EVENT_OPENED`
so it is never marked open. This causes some frontends (e.g. virtio-serial)
to never perform any operations on the socket.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2993
Signed-off-by: Eric K <erickra@cs.utexas.edu>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20251208225849.705554-1-erickra@cs.utexas.edu>
master
Eric K 4 months ago
committed by Marc-André Lureau
parent
commit
45a6256830
  1. 2
      chardev/char-udp.c
  2. 2
      tests/unit/test-char.c

2
chardev/char-udp.c

@ -215,8 +215,6 @@ static void qmp_chardev_open_udp(Chardev *chr,
g_free(name);
s->ioc = QIO_CHANNEL(sioc);
/* be isn't opened until we get a connection */
*be_opened = false;
}
static void char_udp_class_init(ObjectClass *oc, const void *data)

2
tests/unit/test-char.c

@ -1012,6 +1012,8 @@ static void char_udp_test_internal(Chardev *reuse_chr, int sock)
qemu_chr_fe_init(fe, chr, &error_abort);
}
g_assert(chr->be_open);
d.chr = chr;
qemu_chr_fe_set_handlers(fe, socket_can_read_hello, socket_read_hello,
NULL, NULL, &d, NULL, true);

Loading…
Cancel
Save