char-socket: fix error reporting
authorAnthony Liguori <aliguori@us.ibm.com>
Tue, 5 Mar 2013 17:51:16 +0000 (23:21 +0530)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 8 Mar 2013 19:57:12 +0000 (13:57 -0600)
Right now the inet connect code tries all available addresses but until one
doesn't fail.  It passes local_err each time without clearing it from the
previous failure.  This can trigger an assert since the inet connect code
tries to set an error on an object != NULL.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
Message-id: 16c806d60aa5e9660ed7751bb4e37dcd278f97f0.1362505276.git.amit.shah@redhat.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
util/qemu-sockets.c

index 1350cccce31d8c4d75f0f31210c7890f85df5506..3f122965ad328c96bf8ae4785b17a6b096b1a0f9 100644 (file)
@@ -373,6 +373,10 @@ int inet_connect_opts(QemuOpts *opts, Error **errp,
     }
 
     for (e = res; e != NULL; e = e->ai_next) {
+        if (error_is_set(errp)) {
+            error_free(*errp);
+            *errp = NULL;
+        }
         if (connect_state != NULL) {
             connect_state->current_addr = e;
         }