diff --git a/chardev/char-socket.c b/chardev/char-socket.c index d92c5aee73..d057192ced 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -32,6 +32,7 @@ #include "qapi/error.h" #include "qapi/clone-visitor.h" #include "qapi/qapi-visit-sockets.h" +#include "sysemu/sysemu.h" #include "chardev/char-io.h" @@ -722,6 +723,11 @@ static void tcp_chr_tls_init(Chardev *chr) Error *err = NULL; gchar *name; + if (!machine_init_done) { + /* This will be postponed to machine_done notifier */ + return; + } + if (s->is_listen) { tioc = qio_channel_tls_new_server( s->ioc, s->tls_creds, @@ -1162,6 +1168,10 @@ static int tcp_chr_machine_done_hook(Chardev *chr) tcp_chr_connect_async(chr); } + if (s->ioc && s->tls_creds) { + tcp_chr_tls_init(chr); + } + return 0; }