Message ID | 1376424027-26208-1-git-send-email-tmirza@codesourcery.com |
---|---|
State | New |
Headers | show |
Am 13.08.2013 22:00, schrieb Taimoor: > From: Taimoor Mirza <tmirza@codesourcery.com> > > port redirection code uses SO_REUSEADDR socket option before binding to > host port. Behavior of SO_REUSEADDR is different on Windows and Linux. > Relaunching QEMU with same host and guest port redirection values on Linux > throws error but on Windows it does not throw any error. > Problem is discussed in http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg03089.html > > Signed-off-by: Taimoor Mirza <tmirza@codesourcery.com> > --- > slirp/socket.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/slirp/socket.c b/slirp/socket.c > index 8e8819c..23780b3 100644 > --- a/slirp/socket.c > +++ b/slirp/socket.c > @@ -627,7 +627,9 @@ tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr, > addr.sin_port = hport; > > if (((s = qemu_socket(AF_INET,SOCK_STREAM,0)) < 0) || > +#ifdef _WIN32 Shouldn't this be replaced by #ifndef _WIN32? > (qemu_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int)) < 0) || > +#endif > (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) || > (listen(s,1) < 0)) { > int tmperrno = errno; /* Don't clobber the real reason we failed */
Thanks for reviewing the patch On Wed, Aug 14, 2013 at 1:21 AM, Stefan Weil <sw@weilnetz.de> wrote: > Am 13.08.2013 22:00, schrieb Taimoor: >> From: Taimoor Mirza <tmirza@codesourcery.com> >> >> port redirection code uses SO_REUSEADDR socket option before binding to >> host port. Behavior of SO_REUSEADDR is different on Windows and Linux. >> Relaunching QEMU with same host and guest port redirection values on Linux >> throws error but on Windows it does not throw any error. >> Problem is discussed in http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg03089.html >> >> Signed-off-by: Taimoor Mirza <tmirza@codesourcery.com> >> --- >> slirp/socket.c | 2 ++ >> 1 files changed, 2 insertions(+), 0 deletions(-) >> >> diff --git a/slirp/socket.c b/slirp/socket.c >> index 8e8819c..23780b3 100644 >> --- a/slirp/socket.c >> +++ b/slirp/socket.c >> @@ -627,7 +627,9 @@ tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr, >> addr.sin_port = hport; >> >> if (((s = qemu_socket(AF_INET,SOCK_STREAM,0)) < 0) || >> +#ifdef _WIN32 > > Shouldn't this be replaced by #ifndef _WIN32? Yes it should be. I am resending the patch > >> (qemu_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int)) < 0) || >> +#endif >> (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) || >> (listen(s,1) < 0)) { >> int tmperrno = errno; /* Don't clobber the real reason we failed */ > -Taimoor
diff --git a/slirp/socket.c b/slirp/socket.c index 8e8819c..23780b3 100644 --- a/slirp/socket.c +++ b/slirp/socket.c @@ -627,7 +627,9 @@ tcp_listen(Slirp *slirp, uint32_t haddr, u_int hport, uint32_t laddr, addr.sin_port = hport; if (((s = qemu_socket(AF_INET,SOCK_STREAM,0)) < 0) || +#ifdef _WIN32 (qemu_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int)) < 0) || +#endif (bind(s,(struct sockaddr *)&addr, sizeof(addr)) < 0) || (listen(s,1) < 0)) { int tmperrno = errno; /* Don't clobber the real reason we failed */