diff options
author | Joshua Colp <jcolp@digium.com> | 2006-08-29 23:41:16 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2006-08-29 23:41:16 +0000 |
commit | a2e2a51d8d258dcbdf74cc30225bc3eda311c1d2 (patch) | |
tree | 9779edc6b553976e695a26b13f7853f919ef4a62 /main/rtp.c | |
parent | 3f189742f686a9ad292c5a79c3b7bc2969691c18 (diff) |
Move the direct bridge write to after the NAT handling code
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41285 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/rtp.c')
-rw-r--r-- | main/rtp.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/main/rtp.c b/main/rtp.c index 4fdde194c..9e32ebd65 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1042,15 +1042,12 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) return &ast_null_frame; } - if (version != 2) - return &ast_null_frame; - /* Ignore if the other side hasn't been given an address - yet. */ + /* If we don't have the other side's address, then ignore this */ if (!rtp->them.sin_addr.s_addr || !rtp->them.sin_port) return &ast_null_frame; + /* Send to whoever send to us if NAT is turned on */ if (rtp->nat) { - /* Send to whoever sent to us */ if ((rtp->them.sin_addr.s_addr != sin.sin_addr.s_addr) || (rtp->them.sin_port != sin.sin_port)) { rtp->them = sin; @@ -1065,6 +1062,13 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) } } + /* If we are bridged to another RTP stream, send direct */ + if (rtp->bridged && !bridge_p2p_write(rtp, rtpheader, res, hdrlen)) + return &ast_null_frame; + + if (version != 2) + return &ast_null_frame; + payloadtype = (seqno & 0x7f0000) >> 16; padding = seqno & (1 << 29); mark = seqno & (1 << 23); |