diff mbox

[13/22] char-socket: update local address after listen

Message ID 20170202145141.17138-14-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau Feb. 2, 2017, 2:51 p.m. UTC
This is mainly useful to know the actual bound port when using port 0.

For example, when starting qemu with socket on port 0, before:
QEMU waiting for connection on: disconnected:tcp:localhost:0,server
After:
QEMU waiting for connection on: disconnected:tcp:localhost:32454,server

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 chardev/char-socket.c | 5 +++++
 1 file changed, 5 insertions(+)
diff mbox

Patch

diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 1f2377bb4e..58c60d05fe 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -898,6 +898,11 @@  static void qmp_chardev_open_socket(Chardev *chr,
             if (qio_channel_socket_listen_sync(sioc, s->addr, errp) < 0) {
                 goto error;
             }
+
+            qapi_free_SocketAddress(s->addr);
+            s->addr = socket_local_address(sioc->fd, errp);
+            update_disconnected_filename(s);
+
             s->listen_ioc = sioc;
             if (is_waitconnect &&
                 qemu_chr_wait_connected(chr, errp) < 0) {