It looks like qemu (at least version 0.7.2, which is what I'm running here) doesn't set SO_REUSEADDR before calling bind(), which makes that fairly useless. This obvious patch moves up setting SO_REUSEADDR to the right place, just before bind().
Apologies if this is already fixed in 0.8.0. -- kolya --- slirp/socket.c.orig 2006-01-16 15:54:40.993024000 -0800 +++ slirp/socket.c 2006-01-16 15:55:06.049849000 -0800 @@ -573,6 +573,7 @@ addr.sin_port = port; if (((s = socket(AF_INET,SOCK_STREAM,0)) < 0) || + (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) || (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) || (listen(s,1) < 0)) { int tmperrno = errno; /* Don't clobber the real reason we failed */ @@ -587,7 +588,6 @@ #endif return NULL; } - setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)); setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int)); getsockname(s,(struct sockaddr *)&addr,&addrlen); _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel