X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=lib%2Fvconn.c;h=b558f8069fd085f3c58eb3e6aca926d2b9b15984;hb=4f1361e8572832bcd5fa52bc0ec66234b49ac777;hp=f4b3169e36094ad6be7e50ef8e24667cc2cc490a;hpb=fa37b408eac875cbc0d7adbbb3f7a004371172da;p=openvswitch diff --git a/lib/vconn.c b/lib/vconn.c index f4b3169e..b558f806 100644 --- a/lib/vconn.c +++ b/lib/vconn.c @@ -278,14 +278,16 @@ vconn_open_block(const char *name, int min_version, struct vconn **vconnp) fatal_signal_run(); error = vconn_open(name, min_version, &vconn); - while (error == EAGAIN) { - vconn_run(vconn); - vconn_run_wait(vconn); - vconn_connect_wait(vconn); - poll_block(); - error = vconn_connect(vconn); + if (!error) { + while ((error == vconn_connect(vconn)) == EAGAIN) { + vconn_run(vconn); + vconn_run_wait(vconn); + vconn_connect_wait(vconn); + poll_block(); + } assert(error != EINPROGRESS); } + if (error) { vconn_close(vconn); *vconnp = NULL;