about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2013-02-24 17:14:55 +0100
committeroy <Tom_Adams@web.de>2013-02-24 17:14:55 +0100
commit85271f2e7e0c78167288676982366eaafbe4368b (patch)
tree4205bfb36d922f6ae0761a75e60b376cf42d5937
parente291a60e7e5c52e8a6d0117fd2ef3b38521cb81c (diff)
downloadzcatch-85271f2e7e0c78167288676982366eaafbe4368b.tar.gz
zcatch-85271f2e7e0c78167288676982366eaafbe4368b.zip
increased recv buffer size on windows
-rw-r--r--src/base/system.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/base/system.c b/src/base/system.c
index ed0f41ec..7f98efe1 100644
--- a/src/base/system.c
+++ b/src/base/system.c
@@ -903,6 +903,7 @@ NETSOCKET net_udp_create(NETADDR bindaddr)
 	NETSOCKET sock = invalid_socket;
 	NETADDR tmpbindaddr = bindaddr;
 	int broadcast = 1;
+	int recvsize = 65536;
 
 	if(bindaddr.type&NETTYPE_IPV4)
 	{
@@ -917,13 +918,13 @@ NETSOCKET net_udp_create(NETADDR bindaddr)
 		{
 			sock.type |= NETTYPE_IPV4;
 			sock.ipv4sock = socket;
-		}
 
-		/* set non-blocking */
-		net_set_non_blocking(sock);
+			/* set boardcast */
+			setsockopt(socket, SOL_SOCKET, SO_BROADCAST, (const char*)&broadcast, sizeof(broadcast));
 
-		/* set boardcast */
-		setsockopt(socket, SOL_SOCKET, SO_BROADCAST, (const char*)&broadcast, sizeof(broadcast));
+			/* set receive buffer size */
+			setsockopt(socket, SOL_SOCKET, SO_RCVBUF, (char*)&recvsize, sizeof(recvsize));
+		}
 	}
 
 	if(bindaddr.type&NETTYPE_IPV6)
@@ -939,15 +940,18 @@ NETSOCKET net_udp_create(NETADDR bindaddr)
 		{
 			sock.type |= NETTYPE_IPV6;
 			sock.ipv6sock = socket;
-		}
 
-		/* set non-blocking */
-		net_set_non_blocking(sock);
+			/* set boardcast */
+			setsockopt(socket, SOL_SOCKET, SO_BROADCAST, (const char*)&broadcast, sizeof(broadcast));
 
-		/* set boardcast */
-		setsockopt(socket, SOL_SOCKET, SO_BROADCAST, (const char*)&broadcast, sizeof(broadcast));
+			/* set receive buffer size */
+			setsockopt(socket, SOL_SOCKET, SO_RCVBUF, (char*)&recvsize, sizeof(recvsize));
+		}
 	}
 
+	/* set non-blocking */
+	net_set_non_blocking(sock);
+
 	/* return */
 	return sock;
 }