[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/3] char-socket: delay setting fd-pass feature unti
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 3/3] char-socket: delay setting fd-pass feature until connected |
Date: |
Tue, 17 Jul 2018 14:52:39 +0200 |
Wait for QIO channel connection completion, and check the feature set
by QIO. This fixes setting fd-pass chardev feature on
SOCKET_ADDRESS_FD where fd has AF_UNIX.
Signed-off-by: Marc-André Lureau <address@hidden>
---
chardev/char-socket.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 6daa8d003a..7387e632d4 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -789,6 +789,9 @@ static int tcp_chr_new_client(Chardev *chr,
QIOChannelSocket *sioc)
qio_channel_set_blocking(s->ioc, false, NULL);
+ if (qio_channel_has_feature(s->ioc, QIO_CHANNEL_FEATURE_FD_PASS)) {
+ qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS);
+ }
if (s->do_nodelay) {
qio_channel_set_delay(s->ioc, false);
}
@@ -996,11 +999,8 @@ static void qmp_chardev_open_socket(Chardev *chr,
error_setg(errp, "'reconnect' option is incompatible with 'fd'");
goto error;
}
+
qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_RECONNECTABLE);
- /* TODO SOCKET_ADDRESS_FD where fd has AF_UNIX */
- if (addr->type == SOCKET_ADDRESS_TYPE_UNIX) {
- qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS);
- }
/* be isn't opened until we get a connection */
*be_opened = false;
--
2.18.0.129.ge3331758f1