]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
pty: Fix byte loss bug when connecting to pty
authorSebastian Tanase <sebastian.tanase@openwide.fr>
Mon, 28 Jul 2014 11:39:14 +0000 (13:39 +0200)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Wed, 10 Sep 2014 14:30:58 +0000 (09:30 -0500)
When trying to print data to the pty, we first check if it is connected.
If not, we try to reconnect, but we drop the pending data even if we
have successfully reconnected; this makes us lose the first byte of the very
first transmission.
This small fix addresses the issue by checking once more if the pty is connected
after having tried to reconnect.

Signed-off-by: Sebastian Tanase <sebastian.tanase@openwide.fr>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit cf7330c759345de2efe9c0df7921189ac5ff11d3)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qemu-char.c

index 956be49ecd767bb45c13244d3b756ceea277deb0..2abb330a6175c3a2e17a289db2df7919570967c0 100644 (file)
@@ -1160,7 +1160,9 @@ static int pty_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
     if (!s->connected) {
         /* guest sends data, check for (re-)connect */
         pty_chr_update_read_handler_locked(chr);
-        return 0;
+        if (!s->connected) {
+            return 0;
+        }
     }
     return io_channel_send(s->fd, buf, len);
 }