Use tcp_send_timeout config option also on listening socket to timeout outbound messages sent on passive inbound connections.
doc/
subfolder, the README file is autogenerated)Based on the description of core parameter "tcp_send_timeout" the timeout should also work for sending on forked incoming tcp connections. But sending on a broken connection causes the kernel to use the default values of tcp_retries1
and tcp_retries2
, leading to try to send a SIP message for 15 minutes. This makes absolutely no sense in a real time kamailio application.
Following man 7 tcp TCP_USER_TIMEOUT can be used on recent Linux kernels to utilize tcp_send_timeout:
TCP_USER_TIMEOUT (since Linux 2.6.37)
This option takes an unsigned int as an argument. When the value is greater than 0, it specifies the maximum
amount of time in milliseconds that transmitted data may remain unacknowledged before TCP will forcibly close the
corresponding connection and return ETIMEDOUT to the application. If the option value is specified as 0, TCP will
use the system default.
Increasing user timeouts allows a TCP connection to survive extended periods without end-to-end connectivity. De‐
creasing user timeouts allows applications to "fail fast", if so desired. Otherwise, failure may take up to 20
minutes with the current system defaults in a normal WAN environment.
This option can be set during any state of a TCP connection, but is effective only during the synchronized states
of a connection (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and LAST-ACK). Moreover, when used
with the TCP keepalive (SO_KEEPALIVE) option, TCP_USER_TIMEOUT will override keepalive to determine when to close
a connection due to keepalive failure.
The option has no effect on when TCP retransmits a packet, nor when a keepalive probe is sent.
This option, like many others, will be inherited by the socket returned by accept(2), if it was set on the listen‐
ing socket.
Further details on the user timeout feature can be found in RFC 793 and RFC 5482 ("TCP User Timeout Option").
Having a tcp connection break by firewall or network breakdown the retransmits to this destination are now aborted after tcp_send_timeout
seconds with a
NOTICE: <core> [core/tcp_read.c:267]: tcp_read_data(): error reading: Connection timed out (110) ([1.2.3.4]:51151 ->
https://github.com/kamailio/kamailio/pull/3528
(2 files)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.