Index: vl.c
===================================================================
RCS file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.160
diff -u -r1.160 vl.c
--- vl.c	1 Feb 2006 23:06:55 -0000	1.160
+++ vl.c	2 Feb 2006 09:28:19 -0000
@@ -2335,7 +2335,13 @@
 	goto fail;
     }
 
-    ret = bind(fd, (struct sockaddr *)mcastaddr, sizeof(*mcastaddr));
+    struct sockaddr_in addr;
+    memset(&addr, 0, sizeof(addr));
+    addr.sin_family = AF_INET;
+    addr.sin_port = mcastaddr->sin_port;
+    addr.sin_addr.s_addr = INADDR_ANY;
+
+    ret = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
     if (ret < 0) {
         perror("bind");
         goto fail;
@@ -2561,8 +2567,8 @@
         ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));
         if (ret < 0) {
             err = socket_error();
-            if (err == EINTR || err == EWOULDBLOCK) {
-            } else if (err == EINPROGRESS) {
+            if (err == EINTR) {
+            } else if (err == EINPROGRESS || err == EWOULDBLOCK) {
                 break;
             } else {
                 perror("connect");
