Merged revisions 91637 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r91637 | tilghman | 2007-12-06 18:52:17 -0600 (Thu, 06 Dec 2007) | 5 lines

At the end of a call, when we're reporting, RTCP may already be partially torn down, so check for NULL dereference
Reported by: blitzrage
Patch by: tilghman
(Closes issue #11450)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@91638 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Tilghman Lesher 18 years ago
parent 258f3caf0f
commit 77ec19e255

@ -2389,20 +2389,34 @@ char *ast_rtp_get_quality(struct ast_rtp *rtp, struct ast_rtp_quality *qual)
*rtt round trip time *rtt round trip time
*/ */
if (qual) { if (qual && rtp) {
qual->local_ssrc = rtp->ssrc; qual->local_ssrc = rtp->ssrc;
qual->local_lostpackets = rtp->rtcp->expected_prior - rtp->rtcp->received_prior;
qual->local_jitter = rtp->rxjitter; qual->local_jitter = rtp->rxjitter;
qual->local_count = rtp->rxcount; qual->local_count = rtp->rxcount;
qual->remote_ssrc = rtp->themssrc; qual->remote_ssrc = rtp->themssrc;
qual->remote_lostpackets = rtp->rtcp->reported_lost;
qual->remote_jitter = rtp->rtcp->reported_jitter / 65536.0;
qual->remote_count = rtp->txcount; qual->remote_count = rtp->txcount;
qual->rtt = rtp->rtcp->rtt; if (rtp->rtcp) {
qual->local_lostpackets = rtp->rtcp->expected_prior - rtp->rtcp->received_prior;
qual->remote_lostpackets = rtp->rtcp->reported_lost;
qual->remote_jitter = rtp->rtcp->reported_jitter / 65536.0;
qual->rtt = rtp->rtcp->rtt;
}
} }
snprintf(rtp->rtcp->quality, sizeof(rtp->rtcp->quality), "ssrc=%u;themssrc=%u;lp=%u;rxjitter=%f;rxcount=%u;txjitter=%f;txcount=%u;rlp=%u;rtt=%f", rtp->ssrc, rtp->themssrc, rtp->rtcp->expected_prior - rtp->rtcp->received_prior, rtp->rxjitter, rtp->rxcount, (double)rtp->rtcp->reported_jitter/65536., rtp->txcount, rtp->rtcp->reported_lost, rtp->rtcp->rtt); if (rtp->rtcp) {
snprintf(rtp->rtcp->quality, sizeof(rtp->rtcp->quality),
return rtp->rtcp->quality; "ssrc=%u;themssrc=%u;lp=%u;rxjitter=%f;rxcount=%u;txjitter=%f;txcount=%u;rlp=%u;rtt=%f",
rtp->ssrc,
rtp->themssrc,
rtp->rtcp->expected_prior - rtp->rtcp->received_prior,
rtp->rxjitter,
rtp->rxcount,
(double)rtp->rtcp->reported_jitter / 65536.0,
rtp->txcount,
rtp->rtcp->reported_lost,
rtp->rtcp->rtt);
return rtp->rtcp->quality;
} else
return "<Unknown> - RTP/RTCP has already been destroyed";
} }
void ast_rtp_destroy(struct ast_rtp *rtp) void ast_rtp_destroy(struct ast_rtp *rtp)

Loading…
Cancel
Save