Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(568)

Side by Side Diff: talk/app/webrtc/peerconnection.cc

Issue 1520963002: Removing webrtc::PortAllocatorFactoryInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Using new CreatePeerConnection method in objc wrapper. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 #include "webrtc/system_wrappers/include/field_trial.h" 57 #include "webrtc/system_wrappers/include/field_trial.h"
58 58
59 namespace { 59 namespace {
60 60
61 using webrtc::DataChannel; 61 using webrtc::DataChannel;
62 using webrtc::MediaConstraintsInterface; 62 using webrtc::MediaConstraintsInterface;
63 using webrtc::MediaStreamInterface; 63 using webrtc::MediaStreamInterface;
64 using webrtc::PeerConnectionInterface; 64 using webrtc::PeerConnectionInterface;
65 using webrtc::RtpSenderInterface; 65 using webrtc::RtpSenderInterface;
66 using webrtc::StreamCollection; 66 using webrtc::StreamCollection;
67 using webrtc::StunConfigurations;
68 using webrtc::TurnConfigurations;
69 typedef webrtc::PortAllocatorFactoryInterface::StunConfiguration
70 StunConfiguration;
71 typedef webrtc::PortAllocatorFactoryInterface::TurnConfiguration
72 TurnConfiguration;
73 67
74 static const char kDefaultStreamLabel[] = "default"; 68 static const char kDefaultStreamLabel[] = "default";
75 static const char kDefaultAudioTrackLabel[] = "defaulta0"; 69 static const char kDefaultAudioTrackLabel[] = "defaulta0";
76 static const char kDefaultVideoTrackLabel[] = "defaultv0"; 70 static const char kDefaultVideoTrackLabel[] = "defaultv0";
77 71
78 // The min number of tokens must present in Turn host uri. 72 // The min number of tokens must present in Turn host uri.
79 // e.g. user@turn.example.org 73 // e.g. user@turn.example.org
80 static const size_t kTurnHostTokensNum = 2; 74 static const size_t kTurnHostTokensNum = 2;
81 // Number of tokens must be preset when TURN uri has transport param. 75 // Number of tokens must be preset when TURN uri has transport param.
82 static const size_t kTurnTransportTokensNum = 2; 76 static const size_t kTurnTransportTokensNum = 2;
83 // The default stun port. 77 // The default stun port.
84 static const int kDefaultStunPort = 3478; 78 static const int kDefaultStunPort = 3478;
85 static const int kDefaultStunTlsPort = 5349; 79 static const int kDefaultStunTlsPort = 5349;
86 static const char kTransport[] = "transport"; 80 static const char kTransport[] = "transport";
87 static const char kUdpTransportType[] = "udp";
88 static const char kTcpTransportType[] = "tcp";
89 81
90 // NOTE: Must be in the same order as the ServiceType enum. 82 // NOTE: Must be in the same order as the ServiceType enum.
91 static const char* kValidIceServiceTypes[] = {"stun", "stuns", "turn", "turns"}; 83 static const char* kValidIceServiceTypes[] = {"stun", "stuns", "turn", "turns"};
92 84
93 // NOTE: A loop below assumes that the first value of this enum is 0 and all 85 // NOTE: A loop below assumes that the first value of this enum is 0 and all
94 // other values are incremental. 86 // other values are incremental.
95 enum ServiceType { 87 enum ServiceType {
96 STUN = 0, // Indicates a STUN server. 88 STUN = 0, // Indicates a STUN server.
97 STUNS, // Indicates a STUN server used with a TLS session. 89 STUNS, // Indicates a STUN server used with a TLS session.
98 TURN, // Indicates a TURN server 90 TURN, // Indicates a TURN server
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 return false; 205 return false;
214 } 206 }
215 *host = in_str.substr(0, colonpos); 207 *host = in_str.substr(0, colonpos);
216 } else { 208 } else {
217 *host = in_str; 209 *host = in_str;
218 } 210 }
219 } 211 }
220 return !host->empty(); 212 return !host->empty();
221 } 213 }
222 214
223 // Adds a StunConfiguration or TurnConfiguration to the appropriate list, 215 // Adds a STUN or TURN server to the appropriate list,
224 // by parsing |url| and using the username/password in |server|. 216 // by parsing |url| and using the username/password in |server|.
225 bool ParseIceServerUrl(const PeerConnectionInterface::IceServer& server, 217 bool ParseIceServerUrl(const PeerConnectionInterface::IceServer& server,
226 const std::string& url, 218 const std::string& url,
227 StunConfigurations* stun_config, 219 cricket::ServerAddresses* stun_servers,
228 TurnConfigurations* turn_config) { 220 std::vector<cricket::RelayServerConfig>* turn_servers) {
229 // draft-nandakumar-rtcweb-stun-uri-01 221 // draft-nandakumar-rtcweb-stun-uri-01
230 // stunURI = scheme ":" stun-host [ ":" stun-port ] 222 // stunURI = scheme ":" stun-host [ ":" stun-port ]
231 // scheme = "stun" / "stuns" 223 // scheme = "stun" / "stuns"
232 // stun-host = IP-literal / IPv4address / reg-name 224 // stun-host = IP-literal / IPv4address / reg-name
233 // stun-port = *DIGIT 225 // stun-port = *DIGIT
234 226
235 // draft-petithuguenin-behave-turn-uris-01 227 // draft-petithuguenin-behave-turn-uris-01
236 // turnURI = scheme ":" turn-host [ ":" turn-port ] 228 // turnURI = scheme ":" turn-host [ ":" turn-port ]
237 // [ "?transport=" transport ] 229 // [ "?transport=" transport ]
238 // scheme = "turn" / "turns" 230 // scheme = "turn" / "turns"
239 // transport = "udp" / "tcp" / transport-ext 231 // transport = "udp" / "tcp" / transport-ext
240 // transport-ext = 1*unreserved 232 // transport-ext = 1*unreserved
241 // turn-host = IP-literal / IPv4address / reg-name 233 // turn-host = IP-literal / IPv4address / reg-name
242 // turn-port = *DIGIT 234 // turn-port = *DIGIT
243 RTC_DCHECK(stun_config != nullptr); 235 RTC_DCHECK(stun_servers != nullptr);
244 RTC_DCHECK(turn_config != nullptr); 236 RTC_DCHECK(turn_servers != nullptr);
245 std::vector<std::string> tokens; 237 std::vector<std::string> tokens;
246 std::string turn_transport_type = kUdpTransportType; 238 cricket::ProtocolType turn_transport_type = cricket::PROTO_UDP;
247 RTC_DCHECK(!url.empty()); 239 RTC_DCHECK(!url.empty());
248 rtc::tokenize(url, '?', &tokens); 240 rtc::tokenize(url, '?', &tokens);
249 std::string uri_without_transport = tokens[0]; 241 std::string uri_without_transport = tokens[0];
250 // Let's look into transport= param, if it exists. 242 // Let's look into transport= param, if it exists.
251 if (tokens.size() == kTurnTransportTokensNum) { // ?transport= is present. 243 if (tokens.size() == kTurnTransportTokensNum) { // ?transport= is present.
252 std::string uri_transport_param = tokens[1]; 244 std::string uri_transport_param = tokens[1];
253 rtc::tokenize(uri_transport_param, '=', &tokens); 245 rtc::tokenize(uri_transport_param, '=', &tokens);
254 if (tokens[0] == kTransport) { 246 if (tokens[0] == kTransport) {
255 // As per above grammar transport param will be consist of lower case 247 // As per above grammar transport param will be consist of lower case
256 // letters. 248 // letters.
257 if (tokens[1] != kUdpTransportType && tokens[1] != kTcpTransportType) { 249 if (!cricket::StringToProto(tokens[1].c_str(), &turn_transport_type) ||
250 (turn_transport_type != cricket::PROTO_UDP &&
251 turn_transport_type != cricket::PROTO_TCP)) {
258 LOG(LS_WARNING) << "Transport param should always be udp or tcp."; 252 LOG(LS_WARNING) << "Transport param should always be udp or tcp.";
259 return false; 253 return false;
260 } 254 }
261 turn_transport_type = tokens[1];
262 } 255 }
263 } 256 }
264 257
265 std::string hoststring; 258 std::string hoststring;
266 ServiceType service_type; 259 ServiceType service_type;
267 if (!GetServiceTypeAndHostnameFromUri(uri_without_transport, 260 if (!GetServiceTypeAndHostnameFromUri(uri_without_transport,
268 &service_type, 261 &service_type,
269 &hoststring)) { 262 &hoststring)) {
270 LOG(LS_WARNING) << "Invalid transport parameter in ICE URI: " << url; 263 LOG(LS_WARNING) << "Invalid transport parameter in ICE URI: " << url;
271 return false; 264 return false;
(...skipping 18 matching lines...) Expand all
290 } 283 }
291 username.assign(rtc::s_url_decode(tokens[0])); 284 username.assign(rtc::s_url_decode(tokens[0]));
292 hoststring = tokens[1]; 285 hoststring = tokens[1];
293 } else { 286 } else {
294 hoststring = tokens[0]; 287 hoststring = tokens[0];
295 } 288 }
296 289
297 int port = kDefaultStunPort; 290 int port = kDefaultStunPort;
298 if (service_type == TURNS) { 291 if (service_type == TURNS) {
299 port = kDefaultStunTlsPort; 292 port = kDefaultStunTlsPort;
300 turn_transport_type = kTcpTransportType; 293 turn_transport_type = cricket::PROTO_TCP;
301 } 294 }
302 295
303 std::string address; 296 std::string address;
304 if (!ParseHostnameAndPortFromString(hoststring, &address, &port)) { 297 if (!ParseHostnameAndPortFromString(hoststring, &address, &port)) {
305 LOG(WARNING) << "Invalid hostname format: " << uri_without_transport; 298 LOG(WARNING) << "Invalid hostname format: " << uri_without_transport;
306 return false; 299 return false;
307 } 300 }
308 301
309 if (port <= 0 || port > 0xffff) { 302 if (port <= 0 || port > 0xffff) {
310 LOG(WARNING) << "Invalid port: " << port; 303 LOG(WARNING) << "Invalid port: " << port;
311 return false; 304 return false;
312 } 305 }
313 306
314 switch (service_type) { 307 switch (service_type) {
315 case STUN: 308 case STUN:
316 case STUNS: 309 case STUNS:
317 stun_config->push_back(StunConfiguration(address, port)); 310 stun_servers->insert(rtc::SocketAddress(address, port));
318 break; 311 break;
319 case TURN: 312 case TURN:
320 case TURNS: { 313 case TURNS: {
321 bool secure = (service_type == TURNS); 314 bool secure = (service_type == TURNS);
322 turn_config->push_back(TurnConfiguration(address, port, 315 turn_servers->push_back(
323 username, 316 cricket::RelayServerConfig(address, port, username, server.password,
324 server.password, 317 turn_transport_type, secure));
325 turn_transport_type,
326 secure));
327 break; 318 break;
328 } 319 }
329 case INVALID: 320 case INVALID:
330 default: 321 default:
331 LOG(WARNING) << "Configuration not supported: " << url; 322 LOG(WARNING) << "Configuration not supported: " << url;
332 return false; 323 return false;
333 } 324 }
334 return true; 325 return true;
335 } 326 }
336 327
337 void ConvertToCricketIceServers(
338 const std::vector<StunConfiguration>& stuns,
339 const std::vector<TurnConfiguration>& turns,
340 cricket::ServerAddresses* cricket_stuns,
341 std::vector<cricket::RelayServerConfig>* cricket_turns) {
342 RTC_DCHECK(cricket_stuns && cricket_turns);
343 for (const StunConfiguration& stun : stuns) {
344 cricket_stuns->insert(stun.server);
345 }
346
347 int priority = static_cast<int>(turns.size() - 1);
348 for (const TurnConfiguration& turn : turns) {
349 cricket::RelayCredentials credentials(turn.username, turn.password);
350 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN);
351 cricket::ProtocolType protocol;
352 // Using VERIFY because ParseIceServers should have already caught an
353 // invalid transport type.
354 if (!VERIFY(
355 cricket::StringToProto(turn.transport_type.c_str(), &protocol))) {
356 LOG(LS_WARNING) << "Ignoring TURN server " << turn.server << ". "
357 << "Reason= Incorrect " << turn.transport_type
358 << " transport parameter.";
359 } else {
360 relay_server.ports.push_back(
361 cricket::ProtocolAddress(turn.server, protocol, turn.secure));
362 relay_server.credentials = credentials;
363 relay_server.priority = priority;
364 cricket_turns->push_back(relay_server);
365 }
366 // First in the list gets highest priority.
367 --priority;
368 }
369 }
370
371 // Check if we can send |new_stream| on a PeerConnection. 328 // Check if we can send |new_stream| on a PeerConnection.
372 bool CanAddLocalMediaStream(webrtc::StreamCollectionInterface* current_streams, 329 bool CanAddLocalMediaStream(webrtc::StreamCollectionInterface* current_streams,
373 webrtc::MediaStreamInterface* new_stream) { 330 webrtc::MediaStreamInterface* new_stream) {
374 if (!new_stream || !current_streams) { 331 if (!new_stream || !current_streams) {
375 return false; 332 return false;
376 } 333 }
377 if (current_streams->find(new_stream->label()) != nullptr) { 334 if (current_streams->find(new_stream->label()) != nullptr) {
378 LOG(LS_ERROR) << "MediaStream with label " << new_stream->label() 335 LOG(LS_ERROR) << "MediaStream with label " << new_stream->label()
379 << " is already added."; 336 << " is already added.";
380 return false; 337 return false;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 session_options->transport_options.ice_restart = false; 510 session_options->transport_options.ice_restart = false;
554 } 511 }
555 512
556 if (!constraints) { 513 if (!constraints) {
557 return true; 514 return true;
558 } 515 }
559 return mandatory_constraints_satisfied == constraints->GetMandatory().size(); 516 return mandatory_constraints_satisfied == constraints->GetMandatory().size();
560 } 517 }
561 518
562 bool ParseIceServers(const PeerConnectionInterface::IceServers& servers, 519 bool ParseIceServers(const PeerConnectionInterface::IceServers& servers,
563 StunConfigurations* stun_config, 520 cricket::ServerAddresses* stun_servers,
564 TurnConfigurations* turn_config) { 521 std::vector<cricket::RelayServerConfig>* turn_servers) {
565 for (const webrtc::PeerConnectionInterface::IceServer& server : servers) { 522 for (const webrtc::PeerConnectionInterface::IceServer& server : servers) {
566 if (!server.urls.empty()) { 523 if (!server.urls.empty()) {
567 for (const std::string& url : server.urls) { 524 for (const std::string& url : server.urls) {
568 if (url.empty()) { 525 if (url.empty()) {
569 LOG(LS_ERROR) << "Empty uri."; 526 LOG(LS_ERROR) << "Empty uri.";
570 return false; 527 return false;
571 } 528 }
572 if (!ParseIceServerUrl(server, url, stun_config, turn_config)) { 529 if (!ParseIceServerUrl(server, url, stun_servers, turn_servers)) {
573 return false; 530 return false;
574 } 531 }
575 } 532 }
576 } else if (!server.uri.empty()) { 533 } else if (!server.uri.empty()) {
577 // Fallback to old .uri if new .urls isn't present. 534 // Fallback to old .uri if new .urls isn't present.
578 if (!ParseIceServerUrl(server, server.uri, stun_config, turn_config)) { 535 if (!ParseIceServerUrl(server, server.uri, stun_servers, turn_servers)) {
579 return false; 536 return false;
580 } 537 }
581 } else { 538 } else {
582 LOG(LS_ERROR) << "Empty uri."; 539 LOG(LS_ERROR) << "Empty uri.";
583 return false; 540 return false;
584 } 541 }
585 } 542 }
pthatcher1 2015/12/15 07:58:44 Can you leave a comment explaining why this is imp
Taylor Brandstetter 2015/12/15 21:31:54 Done.
543 int priority = static_cast<int>(turn_servers->size() - 1);
544 for (cricket::RelayServerConfig& turn_server : *turn_servers) {
545 // First in the list gets highest priority.
546 turn_server.priority = priority--;
547 }
586 return true; 548 return true;
587 } 549 }
588 550
589 PeerConnection::PeerConnection(PeerConnectionFactory* factory) 551 PeerConnection::PeerConnection(PeerConnectionFactory* factory)
590 : factory_(factory), 552 : factory_(factory),
591 observer_(NULL), 553 observer_(NULL),
592 uma_observer_(NULL), 554 uma_observer_(NULL),
593 signaling_state_(kStable), 555 signaling_state_(kStable),
594 ice_state_(kIceNew), 556 ice_state_(kIceNew),
595 ice_connection_state_(kIceConnectionNew), 557 ice_connection_state_(kIceConnectionNew),
(...skipping 10 matching lines...) Expand all
606 sender->Stop(); 568 sender->Stop();
607 } 569 }
608 for (const auto& receiver : receivers_) { 570 for (const auto& receiver : receivers_) {
609 receiver->Stop(); 571 receiver->Stop();
610 } 572 }
611 } 573 }
612 574
613 bool PeerConnection::Initialize( 575 bool PeerConnection::Initialize(
614 const PeerConnectionInterface::RTCConfiguration& configuration, 576 const PeerConnectionInterface::RTCConfiguration& configuration,
615 const MediaConstraintsInterface* constraints, 577 const MediaConstraintsInterface* constraints,
616 PortAllocatorFactoryInterface* allocator_factory,
617 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
618 PeerConnectionObserver* observer) {
619 RTC_DCHECK(observer != nullptr);
620 if (!observer) {
621 return false;
622 }
623
624 // This Initialize function parses ICE servers an extra time, but it will
625 // be removed once all PortAllocaotrs support SetIceServers.
626 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stun_config;
627 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turn_config;
628 if (!ParseIceServers(configuration.servers, &stun_config, &turn_config)) {
629 return false;
630 }
631 rtc::scoped_ptr<cricket::PortAllocator> allocator(
632 allocator_factory->CreatePortAllocator(stun_config, turn_config));
633 return Initialize(configuration, constraints, allocator.Pass(),
634 dtls_identity_store.Pass(), observer);
635 }
636
637 bool PeerConnection::Initialize(
638 const PeerConnectionInterface::RTCConfiguration& configuration,
639 const MediaConstraintsInterface* constraints,
640 rtc::scoped_ptr<cricket::PortAllocator> allocator, 578 rtc::scoped_ptr<cricket::PortAllocator> allocator,
641 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store, 579 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
642 PeerConnectionObserver* observer) { 580 PeerConnectionObserver* observer) {
643 TRACE_EVENT0("webrtc", "PeerConnection::Initialize"); 581 TRACE_EVENT0("webrtc", "PeerConnection::Initialize");
644 RTC_DCHECK(observer != nullptr); 582 RTC_DCHECK(observer != nullptr);
645 if (!observer) { 583 if (!observer) {
646 return false; 584 return false;
647 } 585 }
648 observer_ = observer; 586 observer_ = observer;
649 587
650 port_allocator_ = allocator.Pass(); 588 port_allocator_ = allocator.Pass();
651 589
652 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stun_config; 590 cricket::ServerAddresses stun_servers;
653 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turn_config; 591 std::vector<cricket::RelayServerConfig> turn_servers;
654 if (!ParseIceServers(configuration.servers, &stun_config, &turn_config)) { 592 if (!ParseIceServers(configuration.servers, &stun_servers, &turn_servers)) {
655 return false; 593 return false;
656 } 594 }
657 595 port_allocator_->SetIceServers(stun_servers, turn_servers);
658 cricket::ServerAddresses cricket_stuns;
659 std::vector<cricket::RelayServerConfig> cricket_turns;
660 ConvertToCricketIceServers(stun_config, turn_config, &cricket_stuns,
661 &cricket_turns);
662 port_allocator_->SetIceServers(cricket_stuns, cricket_turns);
663 596
664 // To handle both internal and externally created port allocator, we will 597 // To handle both internal and externally created port allocator, we will
665 // enable BUNDLE here. 598 // enable BUNDLE here.
666 int portallocator_flags = port_allocator_->flags(); 599 int portallocator_flags = port_allocator_->flags();
667 portallocator_flags |= cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | 600 portallocator_flags |= cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET |
668 cricket::PORTALLOCATOR_ENABLE_IPV6; 601 cricket::PORTALLOCATOR_ENABLE_IPV6;
669 bool value; 602 bool value;
670 // If IPv6 flag was specified, we'll not override it by experiment. 603 // If IPv6 flag was specified, we'll not override it by experiment.
671 if (FindConstraint(constraints, MediaConstraintsInterface::kEnableIPv6, 604 if (FindConstraint(constraints, MediaConstraintsInterface::kEnableIPv6,
672 &value, nullptr)) { 605 &value, nullptr)) {
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 1138
1206 UpdateEndedRemoteMediaStreams(); 1139 UpdateEndedRemoteMediaStreams();
1207 1140
1208 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer); 1141 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer);
1209 signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg); 1142 signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg);
1210 } 1143 }
1211 1144
1212 bool PeerConnection::SetConfiguration(const RTCConfiguration& config) { 1145 bool PeerConnection::SetConfiguration(const RTCConfiguration& config) {
1213 TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration"); 1146 TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration");
1214 if (port_allocator_) { 1147 if (port_allocator_) {
1215 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stuns; 1148 cricket::ServerAddresses stun_servers;
1216 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turns; 1149 std::vector<cricket::RelayServerConfig> turn_servers;
1217 if (!ParseIceServers(config.servers, &stuns, &turns)) { 1150 if (!ParseIceServers(config.servers, &stun_servers, &turn_servers)) {
1218 return false; 1151 return false;
1219 } 1152 }
1220 1153 port_allocator_->SetIceServers(stun_servers, turn_servers);
1221 cricket::ServerAddresses cricket_stuns;
1222 std::vector<cricket::RelayServerConfig> cricket_turns;
1223 ConvertToCricketIceServers(stuns, turns, &cricket_stuns, &cricket_turns);
1224 port_allocator_->SetIceServers(cricket_stuns, cricket_turns);
1225 } 1154 }
1226 session_->SetIceConfig(session_->ParseIceConfig(config)); 1155 session_->SetIceConfig(session_->ParseIceConfig(config));
1227 return session_->SetIceTransports(config.type); 1156 return session_->SetIceTransports(config.type);
1228 } 1157 }
1229 1158
1230 bool PeerConnection::AddIceCandidate( 1159 bool PeerConnection::AddIceCandidate(
1231 const IceCandidateInterface* ice_candidate) { 1160 const IceCandidateInterface* ice_candidate) {
1232 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate"); 1161 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate");
1233 return session_->ProcessIceMessage(ice_candidate); 1162 return session_->ProcessIceMessage(ice_candidate);
1234 } 1163 }
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after
2020 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { 1949 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const {
2021 for (const auto& channel : sctp_data_channels_) { 1950 for (const auto& channel : sctp_data_channels_) {
2022 if (channel->id() == sid) { 1951 if (channel->id() == sid) {
2023 return channel; 1952 return channel;
2024 } 1953 }
2025 } 1954 }
2026 return nullptr; 1955 return nullptr;
2027 } 1956 }
2028 1957
2029 } // namespace webrtc 1958 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698