OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 *error = "candidate has port below 1024, but not 80 or 443"; | 287 *error = "candidate has port below 1024, but not 80 or 443"; |
288 return false; | 288 return false; |
289 } | 289 } |
290 | 290 |
291 if (cand.address().IsPrivateIP()) { | 291 if (cand.address().IsPrivateIP()) { |
292 *error = "candidate has port of 80 or 443 with private IP address"; | 292 *error = "candidate has port of 80 or 443 with private IP address"; |
293 return false; | 293 return false; |
294 } | 294 } |
295 } | 295 } |
296 | 296 |
297 if (!HasChannel(cand.component())) { | |
298 *error = "Candidate has an unknown component: " + cand.ToString() + | |
299 " for content: " + name(); | |
300 return false; | |
301 } | |
302 | |
303 return true; | 297 return true; |
304 } | 298 } |
305 | 299 |
306 bool Transport::VerifyCandidates(const Candidates& candidates, | |
307 std::string* error) { | |
308 for (const Candidate& candidate : candidates) { | |
309 if (!VerifyCandidate(candidate, error)) { | |
310 return false; | |
311 } | |
312 } | |
313 return true; | |
314 } | |
315 | |
316 | 300 |
317 bool Transport::GetStats(TransportStats* stats) { | 301 bool Transport::GetStats(TransportStats* stats) { |
318 stats->transport_name = name(); | 302 stats->transport_name = name(); |
319 stats->channel_stats.clear(); | 303 stats->channel_stats.clear(); |
320 for (auto kv : channels_) { | 304 for (auto kv : channels_) { |
321 TransportChannelImpl* channel = kv.second; | 305 TransportChannelImpl* channel = kv.second; |
322 TransportChannelStats substats; | 306 TransportChannelStats substats; |
323 substats.component = channel->component(); | 307 substats.component = channel->component(); |
324 channel->GetSrtpCryptoSuite(&substats.srtp_crypto_suite); | 308 channel->GetSrtpCryptoSuite(&substats.srtp_crypto_suite); |
325 channel->GetSslCipherSuite(&substats.ssl_cipher_suite); | 309 channel->GetSslCipherSuite(&substats.ssl_cipher_suite); |
326 if (!channel->GetStats(&substats.connection_infos)) { | 310 if (!channel->GetStats(&substats.connection_infos)) { |
327 return false; | 311 return false; |
328 } | 312 } |
329 stats->channel_stats.push_back(substats); | 313 stats->channel_stats.push_back(substats); |
330 } | 314 } |
331 return true; | 315 return true; |
332 } | 316 } |
333 | 317 |
334 bool Transport::AddRemoteCandidates(const std::vector<Candidate>& candidates, | 318 bool Transport::AddRemoteCandidates(const std::vector<Candidate>& candidates, |
335 std::string* error) { | 319 std::string* error) { |
336 ASSERT(!channels_destroyed_); | 320 ASSERT(!channels_destroyed_); |
337 // Verify each candidate before passing down to the transport layer. | 321 // Verify each candidate before passing down to transport layer. |
338 if (!VerifyCandidates(candidates, error)) { | 322 for (const Candidate& cand : candidates) { |
339 return false; | 323 if (!VerifyCandidate(cand, error)) { |
| 324 return false; |
| 325 } |
| 326 if (!HasChannel(cand.component())) { |
| 327 *error = "Candidate has unknown component: " + cand.ToString() + |
| 328 " for content: " + name(); |
| 329 return false; |
| 330 } |
340 } | 331 } |
341 | 332 |
342 for (const Candidate& candidate : candidates) { | 333 for (const Candidate& candidate : candidates) { |
343 TransportChannelImpl* channel = GetChannel(candidate.component()); | 334 TransportChannelImpl* channel = GetChannel(candidate.component()); |
344 if (channel != nullptr) { | 335 if (channel != nullptr) { |
345 channel->AddRemoteCandidate(candidate); | 336 channel->AddRemoteCandidate(candidate); |
346 } | 337 } |
347 } | 338 } |
348 return true; | 339 return true; |
349 } | |
350 | |
351 bool Transport::RemoveRemoteCandidates(const std::vector<Candidate>& candidates, | |
352 std::string* error) { | |
353 ASSERT(!channels_destroyed_); | |
354 // Verify each candidate before passing down to the transport layer. | |
355 if (!VerifyCandidates(candidates, error)) { | |
356 return false; | |
357 } | |
358 | |
359 for (const Candidate& candidate : candidates) { | |
360 TransportChannelImpl* channel = GetChannel(candidate.component()); | |
361 if (channel != nullptr) { | |
362 channel->RemoveRemoteCandidate(candidate); | |
363 } | |
364 } | |
365 return true; | |
366 } | 340 } |
367 | 341 |
368 bool Transport::ApplyLocalTransportDescription(TransportChannelImpl* ch, | 342 bool Transport::ApplyLocalTransportDescription(TransportChannelImpl* ch, |
369 std::string* error_desc) { | 343 std::string* error_desc) { |
370 ch->SetIceCredentials(local_description_->ice_ufrag, | 344 ch->SetIceCredentials(local_description_->ice_ufrag, |
371 local_description_->ice_pwd); | 345 local_description_->ice_pwd); |
372 return true; | 346 return true; |
373 } | 347 } |
374 | 348 |
375 bool Transport::ApplyRemoteTransportDescription(TransportChannelImpl* ch, | 349 bool Transport::ApplyRemoteTransportDescription(TransportChannelImpl* ch, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 // negotiation happens. | 382 // negotiation happens. |
409 for (const auto& kv : channels_) { | 383 for (const auto& kv : channels_) { |
410 if (!ApplyNegotiatedTransportDescription(kv.second, error_desc)) { | 384 if (!ApplyNegotiatedTransportDescription(kv.second, error_desc)) { |
411 return false; | 385 return false; |
412 } | 386 } |
413 } | 387 } |
414 return true; | 388 return true; |
415 } | 389 } |
416 | 390 |
417 } // namespace cricket | 391 } // namespace cricket |
OLD | NEW |