Lei Li <li...@linux.vnet.ibm.com> writes: > tcp_chr_write() did not deal with writing to an unconnected > connection and return the original length of the data, it's > not right and would cause false writing. So (re-)connect it > and return 0 for this situation. > > Signed-off-by: Lei Li <li...@linux.vnet.ibm.com>
Looks good. Reviewed-by: Anthony Liguori <aligu...@us.ibm.com> Regards, Anthony Liguori > --- > qemu-char.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/qemu-char.c b/qemu-char.c > index c2aaaee..25eaeeb 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -2141,14 +2141,17 @@ typedef struct { > > static void tcp_chr_accept(void *opaque); > > +static void tcp_chr_connect(void *opaque); > + > static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len) > { > TCPCharDriver *s = chr->opaque; > if (s->connected) { > return send_all(s->fd, buf, len); > } else { > - /* XXX: indicate an error ? */ > - return len; > + /* (Re-)connect for unconnected writing */ > + tcp_chr_connect(chr); > + return 0; > } > } > > -- > 1.7.7.6