RHEL: Why does recvfrom() sometimes return EINVAL instead of ETIMEDOUT after a retransmission timeout?
Issue
- After deleting a local IP address, an application sent data to an existing connection through that IP address. Therefore TCP retransmissions were invoked, then the retransmission continued until the
tcp_retries2sysctl timeout. If finding the routing cache entry failed aftertcp_retries1boundary or after the garbage collection, this will result in theEINVALerror. After that the application calledrecvfrom()and the connection and gotEINVALerror instead ofETIMEDOUT.
Environment
- Red Hat Enterprise Linux 6
- kernel-2.6.32-358.el6
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.