Set SO_RCVBUF and SO_SNDBUF

This commit is contained in:
angt
2016-03-07 17:29:34 +00:00
parent d3811a9a9b
commit fe5b384ef2

22
mud.c
View File

@@ -454,6 +454,22 @@ int mud_set_key (struct mud *mud, unsigned char *key, size_t size)
return 0;
}
static
int mud_setup_socket (int fd)
{
if (mud_sso_int(fd, SOL_SOCKET, SO_REUSEADDR, 1) ||
mud_sso_int(fd, IPPROTO_IP, IP_PKTINFO, 1) ||
mud_sso_int(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, 1) ||
mud_sso_int(fd, IPPROTO_IPV6, IPV6_V6ONLY, 0) ||
mud_set_nonblock(fd))
return -1;
mud_sso_int(fd, SOL_SOCKET, SO_RCVBUF, 1<<24);
mud_sso_int(fd, SOL_SOCKET, SO_SNDBUF, 1<<24);
return 0;
}
static
int mud_create_socket (const char *port)
{
@@ -476,11 +492,7 @@ int mud_create_socket (const char *port)
if (fd == -1)
continue;
if (mud_sso_int(fd, SOL_SOCKET, SO_REUSEADDR, 1) ||
mud_sso_int(fd, IPPROTO_IP, IP_PKTINFO, 1) ||
mud_sso_int(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, 1) ||
mud_sso_int(fd, IPPROTO_IPV6, IPV6_V6ONLY, 0) ||
mud_set_nonblock(fd) ||
if (mud_setup_socket(fd) ||
bind(fd, p->ai_addr, p->ai_addrlen)) {
close(fd);
fd = -1;