ref: 178fd4b489dd070bdc78d4d3e99048f7e26336ff asterisk/channels/chan_motif.c -rw-r--r-- 108.1 KiB
Ignore Candidates for RTCP Component

We happen to know that all of our clients support rtcp-mux, which means
both kinds of traffic will flow over the same port.
This means that we'll only use component 1.

But, the offerer doesn't technically know that yet, since we don't
advertise that until our session-accept.

So in the meantime it may have generated candidates for component 2.

Our ICE setup is practically on the edge of not working at all, given
the way Jingle trickles candidates in contrast to the spec asterisk was
written against.

So it's a miracle it works at all, since it sees each individual
candidate as the only one.
But when it sees a candidate list that appears to _only_ contain
candidates for component 2, that is rtcp and not rtp, then it doesn't
even try to run the checklists, since it thinks there's no actual media.

So that's apparently one problem too many and nothing works.
This change just ignores candidates for component 2.
There's already code that doesn't _actually_ restart anything if there's
not actually any new candidates, so if that's the only one then it'll
just be ignored.
For candidates for component 1, it should do the same thing it's already
doing, which is limping over the finish-line.
Content Transport is Always Created by Initiator

The original code declared the content to be created by the "initiator"
if this is an outgoing call, and "responder" if it's an incoming call,
which makes sense if we assume we're always the content creator.

But actually, in the clients I've looked at, that's not the case.
In all cases, the initiator includes the initial content description in
their session-initiate message.

So actually, the creator is always the initiator, either us if we
initiated, or them if they did.

Most clients didn't seem to care who the creator was, but Gajim seems
grumpy about it.
DTLS support for video
Default to active on session-accept

Sometimes we send session-accept before the other side has expressed a clear
preference (or before we have processed it, anyway...) -- so just assume the
other side sent actpass, which will set us to active.  This is find so long as
the other side would actually say actpass or passive, but probably very bad if
the other side would say active.
Remove duplicate fingerprint
There can be children other than <content/>

This code is not very smart, but anyway if it just skips things it doesn't
understand instead of aborting that will be better.
130ba7ae — Bernhard Schmidt 3 years ago
Import asterisk_16.2.1~dfsg.orig.tar.xz

[dgit import orig asterisk_16.2.1~dfsg.orig.tar.xz]