From: Alan T. DeKok Date: Thu, 17 Aug 2017 14:45:08 +0000 (+0200) Subject: only set recv/send_buff socket options if they're set in the config X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e72954e415febcfd0b7ba1d047dae9b581f553c;p=thirdparty%2Ffreeradius-server.git only set recv/send_buff socket options if they're set in the config --- diff --git a/src/modules/rlm_radius/rlm_radius_udp.c b/src/modules/rlm_radius/rlm_radius_udp.c index 2b32aa2d811..50e5fdedaf5 100644 --- a/src/modules/rlm_radius/rlm_radius_udp.c +++ b/src/modules/rlm_radius/rlm_radius_udp.c @@ -1406,9 +1406,6 @@ static fr_connection_state_t conn_open(UNUSED fr_event_list_t *el, UNUSED int fd static fr_connection_state_t conn_init(int *fd_out, void *uctx) { int fd; -#if defined (SO_RCVBUF) || defined (SO_SNDBUF) - int opt; -#endif rlm_radius_udp_connection_t *c = talloc_get_type_abort(uctx, rlm_radius_udp_connection_t); char src_buf[128], dst_buf[128]; @@ -1444,16 +1441,24 @@ static fr_connection_state_t conn_init(int *fd_out, void *uctx) dst_buf, c->dst_port); #ifdef SO_RCVBUF - opt = c->inst->recv_buff; - if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + if (c->inst->recv_buff_is_set) { + int opt; + + opt = c->inst->recv_buff; + if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(int)) < 0) { + WARN("Failed setting 'recv_buf': %s", fr_syserror(errno)); + } } #endif #ifdef SO_SNDBUF - opt = c->inst->send_buff; - if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(int)) < 0) { - WARN("Failed setting 'send_buf': %s", fr_syserror(errno)); + if (c->inst->send_buff_is_set) { + int opt; + + opt = c->inst->send_buff; + if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(int)) < 0) { + WARN("Failed setting 'send_buf': %s", fr_syserror(errno)); + } } #endif