network buffer starvation causes sends to client to be suspended
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
EPICS Base |
Fix Released
|
High
|
Jeff Hill |
Bug Description
The original CA is server is written so that if TCP send returns an unexpected error a message is printed and all future sends to the client are disabled. This was done to suppress redundant messages. The code assumed that the thread blocking in a TCP receive system call would receive the same error and disconnect. However, when the error returned was ENOBUFS this did not occur and the send portion of the client ended up in a disabled state. Clearly this needs to be fixed.
Additional information:
In this situation the client must not have disconnected because it saw regular beacons form the IOC. Therefore, the network buffer starvation situation must have been short term or not widespread.
This bug was discovered in R3.13.9 and it appears to exist also in R3.14.4. The portable server and the CA client library do not appear to suffer from this problem.
Thanks to Ken Evans and Andrew Johnson for their assistance isolating the cause of the problem.
Original Mantis Bug: mantis-52
http://
fixed in R3.13.10