@@ -134,30 +134,24 @@ IceTransport::IceTransport(const Configuration &config, candidate_callback candi
134
134
if (!mAgent )
135
135
throw std::runtime_error (" Failed to create the ICE agent" );
136
136
137
- // Filter STUN servers
138
- servers.erase (std::remove_if (servers.begin (), servers.end (),
139
- [](const IceServer &server) {
140
- return server.hostname .empty () ||
141
- server.type != IceServer::Type::Turn;
142
- }),
143
- servers.end ());
144
-
145
137
// Add TURN servers
146
- for (auto &server : servers) {
147
- if (mTURNServersAdded ++ >= MAX_TURN_SERVERS_COUNT) {
148
- break ;
149
- }
150
-
151
- addIceServer (server);
152
- }
138
+ for (const auto &server : servers)
139
+ if (!server.hostname .empty () && server.type != IceServer::Type::Stun)
140
+ addIceServer (server);
153
141
}
154
142
155
143
void IceTransport::addIceServer (IceServer server) {
156
- if (server.hostname .empty () || server.type != IceServer::Type::Turn) {
144
+ if (server.hostname .empty ())
145
+ return ;
146
+
147
+ if (server.type != IceServer::Type::Turn) {
157
148
PLOG_WARNING << " Only TURN servers are supported as additional ICE servers" ;
158
149
return ;
159
150
}
160
151
152
+ if (mTurnServersAdded >= MAX_TURN_SERVERS_COUNT)
153
+ return ;
154
+
161
155
if (server.port == 0 )
162
156
server.port = 3478 ; // TURN UDP port
163
157
@@ -168,9 +162,10 @@ void IceTransport::addIceServer(IceServer server) {
168
162
turn_server.password = server.password .c_str ();
169
163
turn_server.port = server.port ;
170
164
171
- if (juice_add_turn_server (mAgent .get (), &turn_server) != 0 ) {
165
+ if (juice_add_turn_server (mAgent .get (), &turn_server) != 0 )
172
166
throw std::runtime_error (" Failed to add TURN server" );
173
- }
167
+
168
+ ++mTurnServersAdded ;
174
169
}
175
170
176
171
IceTransport::~IceTransport () {
@@ -229,15 +224,10 @@ bool IceTransport::addRemoteCandidate(const Candidate &candidate) {
229
224
230
225
void IceTransport::gatherLocalCandidates (string mid, std::vector<IceServer> additionalIceServers) {
231
226
mMid = std::move (mid);
232
- std::shuffle (additionalIceServers.begin (), additionalIceServers.end (), utils::random_engine ());
233
-
234
- for (auto &server : additionalIceServers) {
235
- if (mTURNServersAdded ++ >= MAX_TURN_SERVERS_COUNT) {
236
- break ;
237
- }
238
227
228
+ std::shuffle (additionalIceServers.begin (), additionalIceServers.end (), utils::random_engine ());
229
+ for (const auto &server : additionalIceServers)
239
230
addIceServer (server);
240
- }
241
231
242
232
// Change state now as candidates calls can be synchronous
243
233
changeGatheringState (GatheringState::InProgress);
@@ -559,18 +549,10 @@ IceTransport::IceTransport(const Configuration &config, candidate_callback candi
559
549
break ;
560
550
}
561
551
562
- // Filter STUN servers
563
- servers.erase (std::remove_if (servers.begin (), servers.end (),
564
- [](const IceServer &server) {
565
- return server.hostname .empty () ||
566
- server.type != IceServer::Type::Turn;
567
- }),
568
- servers.end ());
569
-
570
552
// Add TURN servers
571
- for (auto &server : servers) {
572
- addIceServer ( server);
573
- }
553
+ for (const auto &server : servers)
554
+ if (! server. hostname . empty () && server. type != IceServer::Type::Stun)
555
+ addIceServer (server);
574
556
575
557
g_signal_connect (G_OBJECT (mNiceAgent .get ()), " component-state-changed" ,
576
558
G_CALLBACK (StateChangeCallback), this );
@@ -588,7 +570,10 @@ IceTransport::IceTransport(const Configuration &config, candidate_callback candi
588
570
}
589
571
590
572
void IceTransport::addIceServer (IceServer server) {
591
- if (server.hostname .empty () || server.type != IceServer::Type::Turn) {
573
+ if (server.hostname .empty ())
574
+ return ;
575
+
576
+ if (server.type != IceServer::Type::Turn) {
592
577
PLOG_WARNING << " Only TURN servers are supported as additional ICE servers" ;
593
578
return ;
594
579
}
@@ -724,11 +709,10 @@ bool IceTransport::addRemoteCandidate(const Candidate &candidate) {
724
709
725
710
void IceTransport::gatherLocalCandidates (string mid, std::vector<IceServer> additionalIceServers) {
726
711
mMid = std::move (mid);
727
- std::shuffle (additionalIceServers.begin (), additionalIceServers.end (), utils::random_engine ());
728
712
729
- for (auto &server : additionalIceServers) {
713
+ std::shuffle (additionalIceServers.begin (), additionalIceServers.end (), utils::random_engine ());
714
+ for (const auto &server : additionalIceServers)
730
715
addIceServer (server);
731
- }
732
716
733
717
// Change state now as candidates calls can be synchronous
734
718
changeGatheringState (GatheringState::InProgress);
0 commit comments