aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Tanase <sebastian.tanase@openwide.fr>2014-07-28 13:39:14 +0200
committerGerd Hoffmann <kraxel@redhat.com>2014-09-05 13:27:10 +0200
commitcf7330c759345de2efe9c0df7921189ac5ff11d3 (patch)
tree078c746938df1c28e893ec75868accc28d50b74b
parentfd884c07658d02a96a882b8457d6d7a5cd71a407 (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>
-rw-r--r--qemu-char.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/qemu-char.c b/qemu-char.c
index d4f327ab6d..1a8d9aa543 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);
}