Set SO_REUSEADDR before calling bind().
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 11 Mar 2006 20:48:36 +0000 (20:48 +0000)
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 11 Mar 2006 20:48:36 +0000 (20:48 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1783 c046a42c-6fe2-441c-8c8c-71466251a162

slirp/socket.c

index 47ed44b..fbd9e96 100644 (file)
@@ -573,6 +573,7 @@ solisten(port, laddr, lport, flags)
        addr.sin_port = port;
        
        if (((s = socket(AF_INET,SOCK_STREAM,0)) < 0) ||
+           (setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int)) < 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 @@ solisten(port, laddr, lport, flags)
 #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);