[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 3/5] net: call socket_set_fast_reuse instead of s
From: |
Sebastian Ottlik |
Subject: |
[Qemu-devel] [PATCH v2 3/5] net: call socket_set_fast_reuse instead of setting SO_REUSEADDR |
Date: |
Wed, 4 Sep 2013 19:08:53 +0200 |
SO_REUSEADDR should be avoided on Windows but is desired on other operating
systems. So instead of setting it we call socket_set_fast_reuse that will result
in the appropriate behaviour on all operating systems.
Signed-off-by: Sebastian Ottlik <address@hidden>
diff --git a/net/socket.c b/net/socket.c
index e61309d..0f26208 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -241,7 +241,7 @@ static int net_socket_mcast_create(struct sockaddr_in
*mcastaddr, struct in_addr
{
struct ip_mreq imr;
int fd;
- int val, ret;
+ int ret;
#ifdef __OpenBSD__
unsigned char loop;
#else
@@ -262,10 +262,8 @@ static int net_socket_mcast_create(struct sockaddr_in
*mcastaddr, struct in_addr
return -1;
}
- val = 1;
- ret = qemu_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
+ ret = socket_set_fast_reuse(fd);
if (ret < 0) {
- perror("setsockopt(SOL_SOCKET, SO_REUSEADDR)");
goto fail;
}
@@ -510,7 +508,7 @@ static int net_socket_listen_init(NetClientState *peer,
NetClientState *nc;
NetSocketState *s;
struct sockaddr_in saddr;
- int fd, val, ret;
+ int fd, ret;
if (parse_host_port(&saddr, host_str) < 0)
return -1;
@@ -523,8 +521,7 @@ static int net_socket_listen_init(NetClientState *peer,
qemu_set_nonblock(fd);
/* allow fast reuse */
- val = 1;
- qemu_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
+ socket_set_fast_reuse(fd);
ret = bind(fd, (struct sockaddr *)&saddr, sizeof(saddr));
if (ret < 0) {
@@ -645,7 +642,7 @@ static int net_socket_udp_init(NetClientState *peer,
const char *lhost)
{
NetSocketState *s;
- int fd, val, ret;
+ int fd, ret;
struct sockaddr_in laddr, raddr;
if (parse_host_port(&laddr, lhost) < 0) {
@@ -661,11 +658,9 @@ static int net_socket_udp_init(NetClientState *peer,
perror("socket(PF_INET, SOCK_DGRAM)");
return -1;
}
- val = 1;
- ret = qemu_setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
- &val, sizeof(val));
+
+ ret = socket_set_fast_reuse(fd);
if (ret < 0) {
- perror("setsockopt(SOL_SOCKET, SO_REUSEADDR)");
closesocket(fd);
return -1;
}
--
1.7.9.5
- [Qemu-devel] [PATCH v2 0/5] Do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH v2 2/5] gdbstub: call socket_set_fast_reuse instead of setting SO_REUSEADDR, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH v2 5/5] util: call socket_set_fast_reuse instead of setting SO_REUSEADDR, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH v2 4/5] slirp: call socket_set_fast_reuse instead of setting SO_REUSEADDR, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH v2 1/5] util: add socket_set_fast_reuse function which will replace setting SO_REUSEADDR, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH v2 3/5] net: call socket_set_fast_reuse instead of setting SO_REUSEADDR,
Sebastian Ottlik <=
- Re: [Qemu-devel] [PATCH v2 0/5] Do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/05