]> www.infradead.org Git - users/dwmw2/qemu.git/commitdiff
chardev/char-pty: send CHR_EVENT_CLOSED on disconnect
authorRoman Penyaev <r.peniaev@gmail.com>
Thu, 23 Jan 2025 08:53:21 +0000 (09:53 +0100)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 3 Feb 2025 09:57:08 +0000 (13:57 +0400)
Change makes code symmetric to the code, which handles
the "connected" state, i.e. send CHR_EVENT_CLOSED when
state changes from "connected" to "disconnected".

This behavior is similar to char-socket, for example.

Signed-off-by: Roman Penyaev <r.peniaev@gmail.com>
Reviewed-by: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Reviewed-by: "Alex Bennée" <alex.bennee@linaro.org>
Cc: qemu-devel@nongnu.org
Message-ID: <20250123085327.965501-2-r.peniaev@gmail.com>

chardev/char-pty.c

index cbb21b76ae8dee16335aa8e3200ba347d7304ae5..6a2c1dc13a3f51a9674de5d17d427a80fe1ab70c 100644 (file)
@@ -181,6 +181,9 @@ static void pty_chr_state(Chardev *chr, int connected)
 
     if (!connected) {
         remove_fd_in_watch(chr);
+        if (s->connected) {
+            qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
+        }
         s->connected = 0;
         /* (re-)connect poll interval for idle guests: once per second.
          * We check more frequently in case the guests sends data to
@@ -215,7 +218,6 @@ static void char_pty_finalize(Object *obj)
     pty_chr_state(chr, 0);
     object_unref(OBJECT(s->ioc));
     pty_chr_timer_cancel(s);
-    qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
 }
 
 #if defined HAVE_PTY_H