From fe5b384ef2bab0bab75b5ec219fb9e1fb494cb0b Mon Sep 17 00:00:00 2001 From: angt Date: Mon, 7 Mar 2016 17:29:34 +0000 Subject: [PATCH] Set SO_RCVBUF and SO_SNDBUF --- mud.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/mud.c b/mud.c index dd8d2be..52b3fdb 100644 --- a/mud.c +++ b/mud.c @@ -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;