Bug 1206

Summary: TAO_EC_UDP_Receiver handler removed after socket read error
Product: TAO Reporter: Keith Snively <ksnively>
Component: Real-Time Event ServiceAssignee: DOC Center Support List (internal) <tao-support>
Status: ASSIGNED ---    
Severity: normal    
Priority: P3    
Version: 1.1.21   
Hardware: All   
OS: All   

Description Keith Snively 2002-05-17 12:26:36 CDT
In TAO_ECG_UDP_Receiver::handle_input, if an error is returned, -1,from call to recv() on the 
dgram socket then the handle_input routine returns -1.  This causes the reactor to remove the 
handler for that socket.  Additionally, no error messages are printed or otherwise indicated to 
the process.  This causes the application to suddenly and silently go def on the multicast event 
channel, at least for events originating from other, federated event channels.  This occurs in 2 
points in the routine, 1 for reading the header and the other at reading the entire datagram.  In our 
case, removal of the handle effectively ends participation in the simulation (RTI).  

This 
behavior should be user configurable.  The arriving packet may contain a checksum error, which on 
some OS's returns -1 and sets errno to EAGAIN (EWOULDBLOCK).  Other OS's handle return 0 on this 
error which leads to platform specific behavior for the EC UDP gateway.  In the case of returning -1 
from this routine, use of perror would be preferable to at least see that some error had occurred, 
perhaps again being configurable.
Comment 1 Carlos O'Ryan 2002-05-28 12:49:52 CDT
Re-assign to tao-support, I personally won't have any time to work on it.
Comment 2 Nanbor Wang 2002-06-09 12:08:01 CDT
Accepting for tao-support
Comment 3 Johnny Willemsen 2003-08-18 05:20:47 CDT
FYI, in the latest version of the code now an error is printed.