diff --git a/daemon/call.c b/daemon/call.c index 822061e36..e4756b538 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 3b43908f1..4ffdc3f7a 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; unsigned int asymmetric:1, protocol_accept:1, no_redis_update:1,