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];
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