tcpkeepalive: support setting TCP keep-alive parameters on Solaris <11.4

Solaris didn't support TCP_KEEPIDLE and TCP_KEEPINTVL until 11.4,
before that it use TCP_KEEPALIVE_THRESHOLD and TCP_KEEPALIVE_ABORT_THRESHOLD
as the substitute. Therefore, for Solaris <11.4 we need to use this substitute
for setting TCP keep-alive parameters.

Ref:
https://docs.oracle.com/cd/E86824_01/html/E54777/tcp-7p.html
https://docs.oracle.com/cd/E88353_01/html/E37851/tcp-4p.html

Closes #13864
This commit is contained in:
Andy Pan 2024-06-03 15:15:55 +08:00 committed by Daniel Stenberg
parent 4edbd52267
commit f51fa8f169
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
2 changed files with 38 additions and 5 deletions

View file

@ -19,9 +19,10 @@ Example:
Set the time a connection needs to remain idle before sending keepalive probes
and the time between individual keepalive probes. It is currently effective on
operating systems offering the `TCP_KEEPIDLE` and `TCP_KEEPINTVL` socket
options (meaning Linux, recent AIX, HP-UX and more). Keepalive is used by the
TCP stack to detect broken networks on idle connections. The number of missed
keepalive probes before declaring the connection down is OS dependent and is
commonly 9 or 10. This option has no effect if --no-keepalive is used.
options (meaning Linux, *BSD/macOS, Windows, Solaris, and recent AIX, HP-UX and more).
Keepalive is used by the TCP stack to detect broken networks on idle connections.
The number of missed keepalive probes before declaring the connection down is OS
dependent and is commonly 8 (*BSD/macOS/AIX), 9 (Linux/AIX) or 5/10 (Windows).
This option has no effect if --no-keepalive is used.
If unspecified, the option defaults to 60 seconds.