Just to add a bit for an issue:
On a mobile client, Linphone in particular, system may be in state, that it "believes", that TCP connection still exists, but on a server (Kamailio) side it's already closed by tcp_keepalive_enable() option.
As I got, RST is not reaching mobile device (which is ok, I assume, in a mobile world).
But device due to "internal believes" sending the packets via already dead TCP connection and as a result, on outgoing call I'm getting 408 - Timeout.
Linphone developers suggested to use this CRLF method for keepalive, so I'm asking after finding traces of this RFC only in outbound module.
P.S.: I know, keepalive on TCP and mobile world is usually a bad idea, but maybe it's better in general than SIP OPTIONS ping. From my point of view, TCP stack state should be enough already, but reality is reality