Richard Fuchs writes:
Fine with me. Should only take a couple of lines of
code.
i edited daemon/sdp.c (diff enclosed) and after that o, c, and m lines
were left as is when ICE=force_relay was present. also two baresips now
talked directly for rtp, but still used rtpengine for rtpc.
perhaps than can be explained by the fact that there was no
a=rtcp:<port> or a=rtcp-mux attribute in sdp from caller baresip:
v=0.
o=- 3026288523 667456406 IN IP4 192.168.43.146.
s=-.
c=IN IP4 192.168.43.146.
t=0 0.
a=tool:baresip 0.4.10.
a=ice-lite.
a=ice-ufrag:fjww.
a=ice-pwd:FjnvBvq6JcJqCuaQ1shfb5.
m=audio 10788 RTP/AVP 96 97 98 8 0 101.
b=AS:125.
a=rtpmap:96 opus/48000/2.
a=fmtp:96 stereo=1;sprop-stereo=1.
a=rtpmap:97 speex/16000.
a=fmtp:97 mode="7";vbr=off;cng=on.
a=rtpmap:98 speex/8000.
a=fmtp:98 mode="7";vbr=off;cng=on.
a=rtpmap:8 PCMA/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=sendrecv.
a=label:1.
a=rtcp-rsize.
a=ssrc:2097792405 cname:sip:test@test.tutpro.com.
a=ptime:20.
a=candidate:c062661e 1 UDP 2113932031 192.98.102.30 10788 typ host.
a=candidate:c062661e 2 UDP 2113932030 192.98.102.30 10789 typ host.
a=candidate:c0a82b92 1 UDP 2113932031 192.168.43.146 10788 typ host.
a=candidate:c0a82b92 2 UDP 2113932030 192.168.43.146 10789 typ host.
a=candidate:c062671e 1 UDP 2113932031 192.98.103.30 10788 typ host.
a=candidate:c062671e 2 UDP 2113932030 192.98.103.30 10789 typ host.
a=candidate:63c01c46 1 UDP 2113932031 2002:c062:661e::1 10788 typ host.
a=candidate:63c01c46 2 UDP 2113932030 2002:c062:661e::1 10789 typ host.
a=candidate:1e6662c0 1 UDP 2113932031 ::192.98.102.30 10788 typ host.
a=candidate:1e6662c0 2 UDP 2113932030 ::192.98.102.30 10789 typ host.
but rtpengine went and added a=rtcp:50009 to sdp of the invite:
v=0.
o=- 3026288523 667456406 IN IP4 192.168.43.146.
s=-.
c=IN IP4 192.168.43.146.
t=0 0.
a=tool:baresip 0.4.10.
a=ice-lite.
a=ice-ufrag:fjww.
a=ice-pwd:FjnvBvq6JcJqCuaQ1shfb5.
m=audio 10788 RTP/AVP 96 97 98 8 0 101.
b=AS:125.
a=rtpmap:96 opus/48000/2.
a=fmtp:96 stereo=1;sprop-stereo=1.
a=rtpmap:97 speex/16000.
a=fmtp:97 mode="7";vbr=off;cng=on.
a=rtpmap:98 speex/8000.
a=fmtp:98 mode="7";vbr=off;cng=on.
a=rtpmap:8 PCMA/8000.
a=rtpmap:0 PCMU/8000.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-15.
a=label:1.
a=rtcp-rsize.
a=ssrc:2097792405 cname:sip:test@test.tutpro.com.
a=ptime:20.
a=candidate:c062661e 1 UDP 2113932031 192.98.102.30 10788 typ host.
a=candidate:c062661e 2 UDP 2113932030 192.98.102.30 10789 typ host.
a=candidate:c0a82b92 1 UDP 2113932031 192.168.43.146 10788 typ host.
a=candidate:c0a82b92 2 UDP 2113932030 192.168.43.146 10789 typ host.
a=candidate:c062671e 1 UDP 2113932031 192.98.103.30 10788 typ host.
a=candidate:c062671e 2 UDP 2113932030 192.98.103.30 10789 typ host.
a=candidate:63c01c46 1 UDP 2113932031 2002:c062:661e::1 10788 typ host.
a=candidate:63c01c46 2 UDP 2113932030 2002:c062:661e::1 10789 typ host.
a=candidate:1e6662c0 1 UDP 2113932031 ::192.98.102.30 10788 typ host.
a=candidate:1e6662c0 2 UDP 2113932030 ::192.98.102.30 10789 typ host.
a=sendrecv.
a=rtcp:50009.
a=candidate:vWmFu3vQHsxxmORV 1 UDP 16777216 192.98.102.30 50008 typ relay.
a=candidate:vWmFu3vQHsxxmORV 2 UDP 16777215 192.98.102.30 50009 typ relay.
it thus looks like that when ICE=force_relay is given, also adding of
a=rtcp:<port> need to be prevented.
-- juha
*** sdp.c Mon Apr 28 17:46:41 2014
--- /usr/src/opensipg/trunk/src/rtpengine/daemon/sdp.c Tue Apr 29 22:15:26 2014
***************
*** 1670,1680 ****
}
}
! if (session->origin.parsed && flags->replace_origin) {
if (replace_network_address(chop, &session->origin.address, ps, flags))
goto error;
}
! if (session->connection.parsed && sess_conn) {
if (replace_network_address(chop, &session->connection.address, ps, flags))
goto error;
}
--- 1670,1682 ----
}
}
! if (session->origin.parsed && flags->replace_origin &&
! !flags->ice_force_relay) {
if (replace_network_address(chop, &session->origin.address, ps, flags))
goto error;
}
! if (session->connection.parsed && sess_conn &&
! !flags->ice_force_relay) {
if (replace_network_address(chop, &session->connection.address, ps, flags))
goto error;
}
***************
*** 1703,1718 ****
goto error;
ps = j->data;
! if (replace_media_port(chop, sdp_media, ps))
! goto error;
! if (replace_consecutive_port_count(chop, sdp_media, ps, j))
! goto error;
! if (replace_transport_protocol(chop, sdp_media, call_media))
! goto error;
!
! if (sdp_media->connection.parsed) {
! if (replace_network_address(chop, &sdp_media->connection.address, ps,
flags))
! goto error;
}
if (process_media_attributes(chop, sdp_media, flags, call_media))
--- 1705,1722 ----
goto error;
ps = j->data;
! if (!flags->ice_force_relay) {
! if (replace_media_port(chop, sdp_media, ps))
! goto error;
! if (replace_consecutive_port_count(chop, sdp_media, ps, j))
! goto error;
! if (replace_transport_protocol(chop, sdp_media, call_media))
! goto error;
!
! if (sdp_media->connection.parsed) {
! if (replace_network_address(chop, &sdp_media->connection.address, ps,
flags))
! goto error;
! }
}
if (process_media_attributes(chop, sdp_media, flags, call_media))