From 52a5d63a2df039d297d2bf360cc3fb92b5d6be0b Mon Sep 17 00:00:00 2001 From: Olle Johansson Date: Sun, 29 Oct 2006 20:21:33 +0000 Subject: [PATCH] Bind RTCP to the same IP as RTP. I currently don't see this as a bug that needs to be fixed in 1.4/1.2 too, but feel free to backport if you see it that way. RTCP now binds to ALL IP addresses on the host, RTP to a specific address. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@46409 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/rtp.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main/rtp.c b/main/rtp.c index cf3737c6b1..f21a5afbdc 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1740,6 +1740,7 @@ char *ast_rtp_lookup_mime_multiple(char *buf, size_t size, const int capability, return buf; } +/*! \brief Open RTP or RTCP socket for a session */ static int rtp_socket(void) { int s; @@ -1815,9 +1816,12 @@ struct ast_rtp *ast_rtp_new_with_bindaddr(struct sched_context *sched, struct io /* Must be an even port number by RTP spec */ rtp->us.sin_port = htons(x); rtp->us.sin_addr = addr; + /* If there's rtcp, initialize it as well. */ - if (rtp->rtcp) + if (rtp->rtcp) { rtp->rtcp->us.sin_port = htons(x + 1); + rtp->rtcp->us.sin_addr = addr; + } /* Try to bind it/them. */ if (!(first = bind(rtp->s, (struct sockaddr *)&rtp->us, sizeof(rtp->us))) && (!rtp->rtcp || !bind(rtp->rtcp->s, (struct sockaddr *)&rtp->rtcp->us, sizeof(rtp->rtcp->us))))