Bug 1828

Summary: Incorrect reassembly of multicast fragments
Product: TAO Reporter: Carlos O'Ryan <coryan>
Component: Real-Time Event ServiceAssignee: DOC Center Support List (internal) <tao-support>
Status: NEW ---    
Severity: normal    
Priority: P3    
Version: 1.4.1   
Hardware: All   
OS: All   
Attachments: A patch for ECG_CDR_Message_Receiver
Regression test as a tar file

Description Carlos O'Ryan 2004-05-26 17:48:43 CDT
The code to reassemble multicast fragments has serious bugs in its design and
implementation.  First, it assumes that a remote process will not get reassigned
the same host:port combination after a crash, this is clearly incorrect.  Second
the implementation uses 32-bit unsigned integers, but then performs dumb loops
like this:

for (CORBA::ULong i = purge_first; i <= purge_last; ++i)

this is an infinite loop if purge_last is std::numeric_limits<CORBA::ULong>::max()

to add insult to injury I think the code handles its circular buffer incorrectly.

I have fixes for most of these bugs, and will submit a patch shortly.
Comment 1 Carlos O'Ryan 2004-06-07 15:01:30 CDT
Created attachment 270 [details]
A patch for ECG_CDR_Message_Receiver
Comment 2 Carlos O'Ryan 2004-06-07 15:01:53 CDT
Created attachment 271 [details]
Regression test as a tar file
Comment 3 Carlos O'Ryan 2005-11-01 12:47:00 CST
Did my share, I found the bug, implemented a regression test and submitted a
patch.  I can certainly commit all those things, but I do not have time to
monitor the builds and make sure it works on every silly platform out there. 
Sorry, has to go to the tao-support tar pit.