res_rtp_asterisk: Fix issues with ICE renegotiation.
authorJoshua Colp <jcolp@digium.com>
Wed, 28 Jun 2017 14:03:31 +0000 (14:03 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 28 Jun 2017 14:14:21 +0000 (09:14 -0500)
commit642f8356abd626a6acdeeac6387be69b1e17b044
tree7f20aacf8eee3fb0f4b85fd9a97855e67e875bc4
parenta48d3e4d31c8060856d785fca00c5213d5e012bc
res_rtp_asterisk: Fix issues with ICE renegotiation.

When re-inviting to add more streams it is possible for
the role of existing ICE sessions to be changed to the
incorrect value. This results in subsequent refreshes
within the sessions getting a role conflict and the ICE
session breaking down. This change only sets the role to
be the new value if an ICE renegotiation is actually
going to happen, otherwise the existing role is preserved.

As well if we encounter a situation where a unidirectional
ICE negotiation happens and the other side does not send us
candidates we will not store any information for sending
traffic, even though we know where they are reachable. This
change fixes this by using the source of the ICE traffic
itself as the target if no candidates are known and we
receive some ICE traffic.

ASTERISK-27088

Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9
res/res_rtp_asterisk.c