Thursday, February 02, 2006 8:10 AM Fabrice Bellard wrote:
Hi, I merged your patches and I made important changes to simplify them. I did not do any tests so tell me if you see problems.
-net socket,connect doesn't work. On Windows host, connect returns with err = WSAEWOULDBLOCK and second time err = WSAEINVAL. I think changing the place of EWOULDBLOCK would be good. On Linux host, EWOULDBLOCK is the same as EAGAIN but a patch works on both Linux and Windows. For -net socket,mcast, bind have to be done by sin_addr.s_addr = INADDR_ANY. It seems that it works on Linux host. Regards, Kazu 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");
qemu-20060202-vlan.patch
Description: Binary data
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel