Summary: | ASTERISK-08931: marker bit lost in bridge_p2p_rtp_write | ||
Reporter: | edgreenberg (edgreenberg) | Labels: | |
Date Opened: | 2007-03-03 22:36:07.000-0600 | Date Closed: | 2011-06-07 14:07:54 |
Priority: | Minor | Regression? | No |
Status: | Closed/Complete | Components: | Core/RTP |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) rtp_marker_bit.patch | |
Description: | When this test is not true: if (!ast_test_flag(rtp, FLAG_P2P_SENT_MARK)) { mark = 1; ast_set_flag(rtp, FLAG_P2P_SENT_MARK); } the marker bit is lost. ****** ADDITIONAL INFORMATION ****** The marker bit is extracted from rtrpheader[0] using mark = seqno & (1 << 23); which means it's either 0 if false or 0x800000 if true. Later, this value gets shifted left 23 bits (out of the 32 bit word. Cure is to replace mark = seqno & (1 << 23); with mark = (seqno & 0x800000) >> 23; per the attached patch. Note that padding and ext would suffer from these as well, but they are not used within the function. | ||
Comments: | By: Joshua C. Colp (jcolp) 2007-03-04 21:24:06.000-0600 Fixed in 1.4 as of revision 57768 and trunk as of revision 57769. Thanks! By: edgreenberg (edgreenberg) 2008-01-09 13:37:41.000-0600 I had occasion to work in rtp.c again, and noted that the patch that I submitted is not present in trunk. Not in 1.4.17 either. I do not understand. By: Joshua C. Colp (jcolp) 2008-01-09 14:16:24.000-0600 The way packets were handled was changed almost completely so while your patch is no longer there, the issue should not be present. |