diff options
author | root <root@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-11 09:10:58 +0000 |
---|---|---|
committer | root <root@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-05-11 09:10:58 +0000 |
commit | 4709d25e8c31fc101b0abb6fd4a606daee28e8e7 (patch) | |
tree | a3701355fb038ae55a2b90364de541263d1894fc /rtp.c | |
parent | a04ce503cbe4af6e596b2c1dac647f6982677aa4 (diff) |
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@26798 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'rtp.c')
-rw-r--r-- | rtp.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -90,6 +90,7 @@ struct ast_rtp { unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET]; /*! Synchronization source, RFC 3550, page 10. */ unsigned int ssrc; + unsigned int rxssrc; unsigned int lastts; unsigned int lastdigitts; unsigned int lastrxts; @@ -440,6 +441,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) int ext; int x; char iabuf[INET_ADDRSTRLEN]; + unsigned int ssrc; unsigned int timestamp; unsigned int *rtpheader; static struct ast_frame *f, null_frame = { AST_FRAME_NULL, }; @@ -496,6 +498,14 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) ext = seqno & (1 << 28); seqno &= 0xffff; timestamp = ntohl(rtpheader[1]); + ssrc = ntohl(rtpheader[2]); + + if (!mark && rtp->rxssrc && rtp->rxssrc != ssrc) { + ast_log(LOG_WARNING, "Forcing Marker bit, because SSRC has changed\n"); + mark = 1; + } + + rtp->rxssrc = ssrc; if (padding) { /* Remove padding bytes */ |