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;