mirror of
https://git.openafs.org/openafs.git
synced 2025-01-31 05:27:44 +00:00
DEVEL15-rx-user-socket-buffer-sizes-20090110
LICENSE MIT if the socket buffer size specified by the configuration is too large to be applied, do not drop down immediately to 32766 bytes. Instead try increasingly smaller values trying to find the largest one that works. use the same value for the send buf size as well. (cherry picked from commit 5b0e23567e1ed64f448bb3253ad90d39cad31271)
This commit is contained in:
parent
63b635ced8
commit
3698203264
@ -165,15 +165,26 @@ rxi_GetHostUDPSocket(u_int ahost, u_short port)
|
||||
|
||||
len1 = 32766;
|
||||
len2 = rx_UdpBufSize;
|
||||
greedy =
|
||||
(setsockopt
|
||||
(socketFd, SOL_SOCKET, SO_RCVBUF, (char *)&len2,
|
||||
sizeof(len2)) >= 0);
|
||||
if (!greedy) {
|
||||
len2 = 32766; /* fall back to old size... uh-oh! */
|
||||
}
|
||||
|
||||
greedy =
|
||||
/* find the size closest to rx_UdpBufSize that will be accepted */
|
||||
while (!greedy && len2 > len1) {
|
||||
greedy =
|
||||
(setsockopt
|
||||
(socketFd, SOL_SOCKET, SO_RCVBUF, (char *)&len2,
|
||||
sizeof(len2)) >= 0);
|
||||
if (!greedy)
|
||||
len2 /= 2;
|
||||
}
|
||||
|
||||
/* but do not let it get smaller than 32K */
|
||||
if (len2 < len1)
|
||||
len2 = len1;
|
||||
|
||||
if (len1 < len2)
|
||||
len1 = len2;
|
||||
|
||||
|
||||
greedy =
|
||||
(setsockopt
|
||||
(socketFd, SOL_SOCKET, SO_SNDBUF, (char *)&len1,
|
||||
sizeof(len1)) >= 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user