Rtp.c:891 ast_rtcp_read: RTCP Read too short

I’m Using Asterisk-1.4.13 in Intel® Core™2 CPU 6600 @ 2.40GHz. When My call terminate to an SIP gateway I got rtp.c:891 ast_rtcp_read: RTCP Read too short WARNING. And im Ny side I can hear other party’s voice but other party couldn’t hear me. Using Codec G723.1 or G723.

Can Anybody give me any solution of it? Thanks.

Suberna

When My call terminate to an SIP gateway I got rtp.c:891 ast_rtcp_read: RTCP Read too short WARNING.

Can Anybody give me any solution of it? Thanks.

faisal

We have the same problem with asterisk 1.4.21.2, using ulaw, on inbound and outbound SIP trunk…
Has anyone been able to find out more about this ?

Here is the portion of rtp.c around line 891:

    /* Process a compound packet */
    position = 0;
    while (position < packetwords) {
            i = position;
            length = ntohl(rtcpheader[i]);
            pt = (length & 0xff0000) >> 16;
            rc = (length & 0x1f000000) >> 24;
            length &= 0xffff;

            if ((i + length) > packetwords) {
                    [b]ast_log(LOG_WARNING, "RTCP Read too short\n");[/b]
                    return &ast_null_frame;
            }

            if (rtcp_debug_test_addr(&sin)) {
                    ast_verbose("\n\nGot RTCP from %s:%d\n", ast_inet_ntoa(sin.sin_addr), ntohs(sin.sin_port));
                    ast_verbose("PT: %d(%s)\n", pt, (pt == 200) ? "Sender Report" : (pt == 201) ? "Receiver Report" : (pt == 192) ? "H.\

261 FUR" : “Unknown”);
ast_verbose(“Reception reports: %d\n”, rc);
ast_verbose(“SSRC of sender: %u\n”, rtcpheader[i + 1]);
}

            i += 2; /* Advance past header and ssrc */

            switch (pt) {
            case RTCP_PT_SR:
                    gettimeofday(&rtp->rtcp->rxlsr,NULL); /* To be able to populate the dlsr */
                    rtp->rtcp->spc = ntohl(rtcpheader[i+3]);
                    rtp->rtcp->soc = ntohl(rtcpheader[i + 4]);
                    rtp->rtcp->themrxlsr = ((ntohl(rtcpheader[i]) & 0x0000ffff) << 16) | ((ntohl(rtcpheader[i + 1]) & 0xffff0000) >> 16\

); /* Going to LSR in RR*/

                    if (rtcp_debug_test_addr(&sin)) {
                            ast_verbose("NTP timestamp: %lu.%010lu\n", (unsigned long) ntohl(rtcpheader[i]), (unsigned long) ntohl(rtcp\

header[i + 1]) * 4096);
ast_verbose(“RTP timestamp: %lu\n”, (unsigned long) ntohl(rtcpheader[i + 2]));
ast_verbose(“SPC: %lu\tSOC: %lu\n”, (unsigned long) ntohl(rtcpheader[i + 3]), (unsigned long) ntohl(rtcphea
der[i + 4]));
}
i += 5;
if (rc < 1)
break;