Browse Source

TT#14008 don't try to offer RTCP after previous mux

If an offer is going to a side that is already known to support
rtcp-mux, don't try to offer a fallback RTCP port. Do this by pretending
that rtcp-mux=require is set, which leads to the correct behaviour. This
is needed because the RTCP fallback port might already be closed, so
trying to include it in the offer would require opening a new set of
ports, which is undesirable.

closes #1494

Change-Id: I550bec08379c799cb7dd090a70d090ae47462467
(cherry picked from commit 3ac4863a94)
mr10.5.2
Richard Fuchs 3 years ago
parent
commit
cbce05e9f5
1 changed files with 7 additions and 2 deletions
  1. +7
    -2
      daemon/call.c

+ 7
- 2
daemon/call.c View File

@ -1972,7 +1972,7 @@ static void __rtcp_mux_set(const struct sdp_ng_flags *flags, struct call_media *
MEDIA_CLEAR(media, RTCP_MUX);
}
static void __rtcp_mux_logic(const struct sdp_ng_flags *flags, struct call_media *media,
static void __rtcp_mux_logic(struct sdp_ng_flags *flags, struct call_media *media,
struct call_media *other_media)
{
if (!flags)
@ -1990,11 +1990,16 @@ static void __rtcp_mux_logic(const struct sdp_ng_flags *flags, struct call_media
if (flags->opmode != OP_OFFER)
return;
/* default is to pass through the client's choice, unless our peer is already
* talking rtcp-mux, then we stick to that */
if (!MEDIA_ISSET(media, RTCP_MUX))
bf_copy_same(&media->media_flags, &other_media->media_flags, MEDIA_FLAG_RTCP_MUX);
else {
// mux already in use - unless we were instructed to do something else,
// keep using it and don't offer a fallback choice: this is needed as the
// fallback port might already be closed
flags->rtcp_mux_require = 1;
}
/* in our offer, we can override the client's choice */
__rtcp_mux_set(flags, media);


Loading…
Cancel
Save