From: Lennart Poettering Date: Fri, 27 Jan 2012 17:58:02 +0000 (+0100) Subject: socket: if SO_RCVBUFFORCE fails, fall back to SO_RCVBUF, to have at least a little... X-Git-Tag: v40~33 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;ds=inline;h=7d9eaa8461da2a4ef5ae840f41a3434c112dae37;p=elogind.git socket: if SO_RCVBUFFORCE fails, fall back to SO_RCVBUF, to have at least a little effect --- diff --git a/src/socket.c b/src/socket.c index 7409aea5e..67cd0cce8 100644 --- a/src/socket.c +++ b/src/socket.c @@ -680,14 +680,19 @@ static void socket_apply_socket_options(Socket *s, int fd) { if (s->receive_buffer > 0) { int value = (int) s->receive_buffer; + + /* We first try with SO_RCVBUFFORCE, in case we have the perms for that */ + if (setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &value, sizeof(value)) < 0) - log_warning("SO_RCVBUFFORCE failed: %m"); + if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, sizeof(value)) < 0) + log_warning("SO_RCVBUF failed: %m"); } if (s->send_buffer > 0) { int value = (int) s->send_buffer; if (setsockopt(fd, SOL_SOCKET, SO_SNDBUFFORCE, &value, sizeof(value)) < 0) - log_warning("SO_SNDBUFFORCE failed: %m"); + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, sizeof(value)) < 0) + log_warning("SO_SNDBUF failed: %m"); } if (s->mark >= 0)