Mercurial > dovecot > core-2.2
diff src/lib/net.c @ 20351:f3e249261abd
lib: Implemented net_set_send_buffer_size() and net_set_recv_buffer_size().
These functions allow manipulating the kernel socket buffer sizes for a socket file descriptor.
author | Stephan Bosch <stephan@dovecot.fi> |
---|---|
date | Fri, 20 May 2016 00:02:49 +0200 |
parents | 55831f9d2e66 |
children | 06fd5e4f123e |
line wrap: on
line diff
--- a/src/lib/net.c Thu May 19 23:42:14 2016 +0200 +++ b/src/lib/net.c Fri May 20 00:02:49 2016 +0200 @@ -374,6 +374,30 @@ #endif } +int net_set_send_buffer_size(int fd, size_t size) +{ + int opt; + + if (size > INT_MAX) { + errno = EINVAL; + return -1; + } + opt = (int)size; + return setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(opt)); +} + +int net_set_recv_buffer_size(int fd, size_t size) +{ + int opt; + + if (size > INT_MAX) { + errno = EINVAL; + return -1; + } + opt = (int)size; + return setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)); +} + void net_get_ip_any4(struct ip_addr *ip) { ip->family = AF_INET;