<p>Joshua Colp <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/6602">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Joshua Colp: Looks good to me, but someone else must approve; Approved for Submit
George Joseph: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">res_rtp_asterisk: Trim trailing byte off of SDES packet<br><br>This could have been fixed by subtracting 1 from the final value of<br>'len' but the way the packet was being constructed was confusing so I<br>took the opportunity to (I think) make it more clear.<br><br>We were sending 1 extra byte at the end of the SDES RTCP packet which<br>caused Chrome to complain (in its debug log):<br><br> Too little data (1 byte) remaining in buffer to parse<br> RTCP header (4 bytes).<br><br>We now send the correct number of bytes.<br><br>Change-Id: I9dcf087cdaf97da0374ae0acb7d379746a71e81b<br>---<br>M res/res_rtp_asterisk.c<br>1 file changed, 29 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c<br>index c8cc04f..35cb087 100644<br>--- a/res/res_rtp_asterisk.c<br>+++ b/res/res_rtp_asterisk.c<br>@@ -3771,6 +3771,7 @@<br> RAII_VAR(struct ast_json *, message_blob, NULL, ast_json_unref);<br> int res;<br> int len = 0;<br>+ uint16_t sdes_packet_len_bytes, sdes_packet_len_rounded;<br> struct timeval now;<br> unsigned int now_lsw;<br> unsigned int now_msw;<br>@@ -3778,7 +3779,7 @@<br> unsigned int lost_packets;<br> int fraction_lost;<br> struct timeval dlsr = { 0, };<br>- unsigned char bdata[512] = "";<br>+ unsigned char bdata[AST_UUID_STR_LEN + 128] = ""; /* More than enough */<br> int rate = rtp_get_rate(rtp->f.subclass.format);<br> int ice;<br> struct ast_sockaddr remote_address = { { 0, } };<br>@@ -3858,12 +3859,35 @@<br> put_unaligned_uint32(rtcpheader, htonl((2 << 30) | (rtcp_report->reception_report_count << 24)<br> | ((sr ? RTCP_PT_SR : RTCP_PT_RR) << 16) | ((len/4)-1)));<br> <br>- put_unaligned_uint32(rtcpheader + len, htonl((2 << 30) | (1 << 24) | (RTCP_PT_SDES << 16) | (2 + (AST_UUID_STR_LEN / 4))));<br>+ sdes_packet_len_bytes =<br>+ 4 + /* RTCP Header */<br>+ 4 + /* SSRC */<br>+ 1 + /* Type (CNAME) */<br>+ 1 + /* Text Length */<br>+ AST_UUID_STR_LEN /* Text and NULL terminator */<br>+ ;<br>+<br>+ /* Round to 32 bit boundary */<br>+ sdes_packet_len_rounded = (sdes_packet_len_bytes + 3) & ~0x3;<br>+<br>+ put_unaligned_uint32(rtcpheader + len, htonl((2 << 30) | (1 << 24) | (RTCP_PT_SDES << 16) | ((sdes_packet_len_rounded / 4) - 1)));<br> put_unaligned_uint32(rtcpheader + len + 4, htonl(rtcp_report->ssrc));<br>- put_unaligned_uint16(rtcpheader + len + 8, htonl(0x01 << 24));<br>- put_unaligned_uint16(rtcpheader + len + 9, htonl(AST_UUID_STR_LEN << 24));<br>+ rtcpheader[len + 8] = 0x01; /* CNAME */<br>+ rtcpheader[len + 9] = AST_UUID_STR_LEN - 1; /* Number of bytes of text */<br> memcpy(rtcpheader + len + 10, rtp->cname, AST_UUID_STR_LEN);<br>- len += 12 + AST_UUID_STR_LEN;<br>+ len += 10 + AST_UUID_STR_LEN;<br>+<br>+ /* Padding - Note that we don't set the padded bit on the packet. From<br>+ * RFC 3550 Section 6.5:<br>+ *<br>+ * No length octet follows the null item type octet, but additional null<br>+ * octets MUST be included if needed to pad until the next 32-bit<br>+ * boundary. Note that this padding is separate from that indicated by<br>+ * the P bit in the RTCP header.<br>+ *<br>+ * These bytes will already be zeroed out during array initialization.<br>+ */<br>+ len += (sdes_packet_len_rounded - sdes_packet_len_bytes);<br> <br> if (rtp->bundled) {<br> ast_rtp_instance_get_remote_address(instance, &remote_address);<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/6602">change 6602</a>. To unsubscribe, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/6602"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I9dcf087cdaf97da0374ae0acb7d379746a71e81b </div>
<div style="display:none"> Gerrit-Change-Number: 6602 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Sean Bright <sean.bright@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@digium.com> </div>