Set SO_RCVBUF and SO_SNDBUF
This commit is contained in:
22
mud.c
22
mud.c
@@ -454,6 +454,22 @@ int mud_set_key (struct mud *mud, unsigned char *key, size_t size)
|
|||||||
return 0;
|
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
|
static
|
||||||
int mud_create_socket (const char *port)
|
int mud_create_socket (const char *port)
|
||||||
{
|
{
|
||||||
@@ -476,11 +492,7 @@ int mud_create_socket (const char *port)
|
|||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (mud_sso_int(fd, SOL_SOCKET, SO_REUSEADDR, 1) ||
|
if (mud_setup_socket(fd) ||
|
||||||
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) ||
|
|
||||||
bind(fd, p->ai_addr, p->ai_addrlen)) {
|
bind(fd, p->ai_addr, p->ai_addrlen)) {
|
||||||
close(fd);
|
close(fd);
|
||||||
fd = -1;
|
fd = -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user