@@ -1746,12 +1746,13 @@ defmodule ExWebRTC.PeerConnection do
1746
1746
defp apply_local_description ( % SessionDescription { type: type , sdp: raw_sdp } , state ) do
1747
1747
with { :ok , next_sig_state } <- next_signaling_state ( state . signaling_state , :local , type ) ,
1748
1748
:ok <- check_altered ( type , raw_sdp , state ) ,
1749
- { :ok , sdp } <- parse_sdp ( raw_sdp ) do
1749
+ { :ok , sdp } <- parse_sdp ( raw_sdp ) ,
1750
+ ice_lite <- SDPUtils . get_ice_lite ( sdp ) do
1750
1751
# See: https://www.w3.org/TR/webrtc/#ref-for-dfn-icerole-1
1751
1752
# Also, this has to be before gathering candidates.
1752
1753
# Note: If we add support for ice-lite, this code needs to be adjusted.
1753
- if state . ice_transport . get_role ( state . ice_pid ) == nil and type == :offer do
1754
- :ok = state . ice_transport . set_role ( state . ice_pid , :controlling )
1754
+ if state . ice_transport . get_role ( state . ice_pid ) == nil do
1755
+ set_ice_role ( state , :local , type , ice_lite )
1755
1756
end
1756
1757
1757
1758
if state . ice_gathering_state == :new do
@@ -1800,13 +1801,7 @@ defmodule ExWebRTC.PeerConnection do
1800
1801
# See: https://www.w3.org/TR/webrtc/#ref-for-dfn-icerole-1
1801
1802
# Note: If we add support for ice-lite, this code needs to be adjusted.
1802
1803
if state . ice_transport . get_role ( state . ice_pid ) == nil do
1803
- cond do
1804
- type == :offer and ice_lite == true ->
1805
- :ok = state . ice_transport . set_role ( state . ice_pid , :controlling )
1806
-
1807
- type == :offer and ice_lite == false ->
1808
- :ok = state . ice_transport . set_role ( state . ice_pid , :controlled )
1809
- end
1804
+ set_ice_role ( state , :remote , type , ice_lite )
1810
1805
end
1811
1806
1812
1807
twcc_id =
@@ -1972,6 +1967,18 @@ defmodule ExWebRTC.PeerConnection do
1972
1967
% { state | pending_remote_desc: { type , sdp } }
1973
1968
end
1974
1969
1970
+ defp set_ice_role ( state , :local , :offer , _ice_lite ) do
1971
+ :ok = state . ice_transport . set_role ( state . ice_pid , :controlling )
1972
+ end
1973
+
1974
+ defp set_ice_role ( state , :remote , :offer , true ) do
1975
+ :ok = state . ice_transport . set_role ( state . ice_pid , :controlling )
1976
+ end
1977
+
1978
+ defp set_ice_role ( state , :remote , :offer , false ) do
1979
+ :ok = state . ice_transport . set_role ( state . ice_pid , :controlled )
1980
+ end
1981
+
1975
1982
defp parse_sdp ( raw_sdp ) do
1976
1983
case ExSDP . parse ( raw_sdp ) do
1977
1984
{ :ok , _sdp } = res -> res
0 commit comments