From 0875ed1f1b010e45a9c230b9435f84f7cb8a6046 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 3 Mar 2021 08:26:40 -0500 Subject: [PATCH] TT#101201 fix ICE-lite mode switch Change-Id: I10689bc07b86984880bfd420d6be4fbb057c41d1 (cherry picked from commit def813cfdedf7056d2e6feda861b9fca82a5d9ac) --- daemon/call.c | 40 +++++++++++++++++++++------------------ include/call_interfaces.h | 5 +++-- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index a165975ca..b2bec55eb 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -1310,24 +1310,28 @@ static void __ice_offer(const struct sdp_ng_flags *flags, struct call_media *thi } } - switch (flags->ice_lite_option) { - case ICE_LITE_OFF: - MEDIA_CLEAR(this, ICE_LITE_SELF); - MEDIA_CLEAR(other, ICE_LITE_SELF); - break; - case ICE_LITE_FWD: - MEDIA_SET(this, ICE_LITE_SELF); - MEDIA_CLEAR(other, ICE_LITE_SELF); - break; - case ICE_LITE_BKW: - MEDIA_CLEAR(this, ICE_LITE_SELF); - MEDIA_SET(other, ICE_LITE_SELF); - break; - case ICE_LITE_BOTH: - MEDIA_SET(this, ICE_LITE_SELF); - MEDIA_SET(other, ICE_LITE_SELF); - break; - }; + if (flags->opmode == OP_OFFER) { + switch (flags->ice_lite_option) { + case ICE_LITE_OFF: + MEDIA_CLEAR(this, ICE_LITE_SELF); + MEDIA_CLEAR(other, ICE_LITE_SELF); + break; + case ICE_LITE_FWD: + MEDIA_SET(this, ICE_LITE_SELF); + MEDIA_CLEAR(other, ICE_LITE_SELF); + break; + case ICE_LITE_BKW: + MEDIA_CLEAR(this, ICE_LITE_SELF); + MEDIA_SET(other, ICE_LITE_SELF); + break; + case ICE_LITE_BOTH: + MEDIA_SET(this, ICE_LITE_SELF); + MEDIA_SET(other, ICE_LITE_SELF); + break; + default: + break; + } + } /* determine roles (even if we don't actually do ICE) */ /* this = receiver, other = sender */ diff --git a/include/call_interfaces.h b/include/call_interfaces.h index c6c4c1b9c..6d82bd141 100644 --- a/include/call_interfaces.h +++ b/include/call_interfaces.h @@ -58,11 +58,12 @@ struct sdp_ng_flags { ICE_OPTIONAL, } ice_option:3; enum { - ICE_LITE_OFF = 0, + ICE_LITE_DEFAULT = 0, + ICE_LITE_OFF, ICE_LITE_FWD, ICE_LITE_BKW, ICE_LITE_BOTH, - } ice_lite_option:2; + } ice_lite_option:3; int asymmetric:1, protocol_accept:1, no_redis_update:1,