inet_connect_opts() tries all possible addrinfos returned by getaddrinfo(). If one fails with an error, the next one is tried. In this case, the Error should be discarded because the whole operation is successful if another addrinfo from the list succeeds; and if it doesn't, setting an already set Error will trigger an assertion failure.
Signed-off-by: Kevin Wolf <kw...@redhat.com> --- util/qemu-sockets.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 1350ccc..32e609a 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -373,6 +373,14 @@ int inet_connect_opts(QemuOpts *opts, Error **errp, } for (e = res; e != NULL; e = e->ai_next) { + + /* Overwriting errors isn't allowed, so clear any error that may have + * occured in the previous iteration */ + if (error_is_set(errp)) { + error_free(*errp); + *errp = NULL; + } + if (connect_state != NULL) { connect_state->current_addr = e; } -- 1.8.1.4