aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Tanase <sebastian.tanase@openwide.fr>2014-07-28 13:39:14 +0200
committerMichael Roth <mdroth@linux.vnet.ibm.com>2014-09-10 09:30:58 -0500
commit257e9cfce21e8f2f0db99992cfc2452fb83debe8 (patch)
treec0bfa57ea10bd12814d4946c64a3f747b5ad4f36
parent1aa87d3689cc2388a74c9db1dd728c6f4673836e (diff)
pty: Fix byte loss bug when connecting to pty
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>
-rw-r--r--qemu-char.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/qemu-char.c b/qemu-char.c
index 956be49ecd..2abb330a61 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -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);
}