Skip to content

Commit 386e75a

Browse files
author
Thomas
committed
get tricle from ice options
1 parent 3212fbe commit 386e75a

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

src/library/webrtc-connection/webrtc_connection.cpp

+17-9
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ namespace nabto {
1616

1717
WebrtcConnectionPtr WebrtcConnection::create(SignalingStreamPtr sigStream, NabtoDevicePtr device, std::vector<struct TurnServer>& turnServers, EventQueuePtr queue, TrackEventCallback trackCb, CheckAccessCallback accessCb, DatachannelEventCallback datachannelCb)
1818
{
19-
return std::make_shared<WebrtcConnection>(sigStream, device, turnServers, queue, trackCb, accessCb, datachannelCb);
19+
auto ptr = std::make_shared<WebrtcConnection>(sigStream, device, turnServers, queue, trackCb, accessCb, datachannelCb);
20+
if (ptr) {
21+
ptr->init();
22+
}
23+
return ptr;
2024
}
2125

2226
WebrtcConnection::WebrtcConnection(SignalingStreamPtr sigStream, NabtoDevicePtr device, std::vector<struct TurnServer>& turnServers, EventQueuePtr queue, TrackEventCallback trackCb, CheckAccessCallback accessCb, DatachannelEventCallback datachannelCb)
@@ -32,6 +36,11 @@ WebrtcConnection::~WebrtcConnection()
3236
}
3337
}
3438

39+
void WebrtcConnection::init()
40+
{
41+
createPeerConnection();
42+
}
43+
3544
void WebrtcConnection::stop()
3645
{
3746
if (pc_) {
@@ -69,9 +78,14 @@ void WebrtcConnection::handleCandidate(rtc::Candidate cand)
6978
void WebrtcConnection::handleDescription(rtc::Description desc)
7079
{
7180
NPLOGD << "Got Description: " << desc;
72-
if (!pc_) {
73-
createPeerConnection();
81+
auto ice = desc.iceOptions();
82+
canTrickle_ = false;
83+
for (auto& i : ice) {
84+
if (i == "trickle") {
85+
canTrickle_ = true;
86+
}
7487
}
88+
7589
try {
7690
// TODO: remove metadata from v2 but maybe keep for v1
7791
nlohmann::json metadata;
@@ -84,9 +98,6 @@ void WebrtcConnection::handleDescription(rtc::Description desc)
8498

8599
void WebrtcConnection::handleOfferAnswer(const std::string& data, const nlohmann::json& metadata) {
86100
NPLOGD << "Got Offer/Answer: " << data;
87-
if (!pc_) {
88-
createPeerConnection();
89-
}
90101
try {
91102
nlohmann::json sdp = nlohmann::json::parse(data);
92103
rtc::Description remDesc(sdp["sdp"].get<std::string>(), sdp["type"].get<std::string>());
@@ -348,9 +359,6 @@ NabtoDeviceConnectionRef WebrtcConnection::getConnectionRef() {
348359

349360
void WebrtcConnection::createTracks(const std::vector<MediaTrackPtr>& tracks)
350361
{
351-
if (!pc_) {
352-
createPeerConnection();
353-
}
354362
for (auto t : tracks) {
355363
auto sdp = t->getSdp();
356364
rtc::Description::Media media(sdp);

src/library/webrtc-connection/webrtc_connection.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class WebrtcConnection : public std::enable_shared_from_this<WebrtcConnection>
4141
WebrtcConnection(SignalingStreamPtr sigStream, NabtoDevicePtr device, std::vector<struct TurnServer>& turnServers, EventQueuePtr queue, TrackEventCallback trackCb, CheckAccessCallback accessCb, DatachannelEventCallback datachannelCb);
4242
~WebrtcConnection();
4343

44+
void init();
4445

4546
// signaling v2
4647
void handleCandidate(rtc::Candidate cand);

test/signaling-tests/signaling_tests_v2.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ BOOST_AUTO_TEST_CASE(recv_metadata, *boost::unit_test::timeout(180))
317317
BOOST_AUTO_TEST_CASE(answer_an_offer, *boost::unit_test::timeout(180))
318318
{
319319
nlohmann::json offerData = {
320-
{"sdp", "v=0\r\no=- 4001653510419693843 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:9aLM\r\na=ice-pwd:jtaHrFFgBekhsoOD+0pS3PaI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 28:E0:2D:E0:11:02:A0:1A:39:8C:86:B2:19:11:5D:98:F3:8C:79:8F:56:08:52:E2:30:25:35:C9:67:FE:93:B7\r\na=setup:actpass\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"},
320+
{"sdp", "v=0\r\no=- 4001653510419693843 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:9aLM\r\na=ice-pwd:jtaHrFFgBekhsoOD+0pS3PaI\r\na=ice-options:ice2,trickle\r\na=fingerprint:sha-256 28:E0:2D:E0:11:02:A0:1A:39:8C:86:B2:19:11:5D:98:F3:8C:79:8F:56:08:52:E2:30:25:35:C9:67:FE:93:B7\r\na=setup:actpass\r\na=mid:0\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"},
321321
{"type", "offer"}
322322
};
323323
auto td = nabto::test::TestDevice::create();

0 commit comments

Comments
 (0)