OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 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 18 matching lines...) Expand all Loading... |
29 #include "webrtc/base/socketaddress.h" | 29 #include "webrtc/base/socketaddress.h" |
30 #include "webrtc/base/ssladapter.h" | 30 #include "webrtc/base/ssladapter.h" |
31 #include "webrtc/base/thread.h" | 31 #include "webrtc/base/thread.h" |
32 #include "webrtc/base/virtualsocketserver.h" | 32 #include "webrtc/base/virtualsocketserver.h" |
33 | 33 |
34 using cricket::ServerAddresses; | 34 using cricket::ServerAddresses; |
35 using rtc::SocketAddress; | 35 using rtc::SocketAddress; |
36 using rtc::Thread; | 36 using rtc::Thread; |
37 | 37 |
38 static const SocketAddress kClientAddr("11.11.11.11", 0); | 38 static const SocketAddress kClientAddr("11.11.11.11", 0); |
| 39 static const SocketAddress kLoopbackAddr("127.0.0.1", 0); |
39 static const SocketAddress kPrivateAddr("192.168.1.11", 0); | 40 static const SocketAddress kPrivateAddr("192.168.1.11", 0); |
40 static const SocketAddress kPrivateAddr2("192.168.1.12", 0); | 41 static const SocketAddress kPrivateAddr2("192.168.1.12", 0); |
41 static const SocketAddress kClientIPv6Addr( | 42 static const SocketAddress kClientIPv6Addr( |
42 "2401:fa00:4:1000:be30:5bff:fee5:c3", 0); | 43 "2401:fa00:4:1000:be30:5bff:fee5:c3", 0); |
43 static const SocketAddress kClientAddr2("22.22.22.22", 0); | 44 static const SocketAddress kClientAddr2("22.22.22.22", 0); |
44 static const SocketAddress kNatUdpAddr("77.77.77.77", rtc::NAT_SERVER_UDP_PORT); | 45 static const SocketAddress kNatUdpAddr("77.77.77.77", rtc::NAT_SERVER_UDP_PORT); |
45 static const SocketAddress kNatTcpAddr("77.77.77.77", rtc::NAT_SERVER_TCP_PORT); | 46 static const SocketAddress kNatTcpAddr("77.77.77.77", rtc::NAT_SERVER_TCP_PORT); |
46 static const SocketAddress kRemoteClientAddr("22.22.22.22", 0); | 47 static const SocketAddress kRemoteClientAddr("22.22.22.22", 0); |
47 static const SocketAddress kStunAddr("99.99.99.1", cricket::STUN_SERVER_PORT); | 48 static const SocketAddress kStunAddr("99.99.99.1", cricket::STUN_SERVER_PORT); |
48 static const SocketAddress kRelayUdpIntAddr("99.99.99.2", 5000); | 49 static const SocketAddress kRelayUdpIntAddr("99.99.99.2", 5000); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 } | 237 } |
237 } | 238 } |
238 | 239 |
239 // This function starts the port/address gathering and check the existence of | 240 // This function starts the port/address gathering and check the existence of |
240 // candidates as specified. When |expect_stun_candidate| is true, | 241 // candidates as specified. When |expect_stun_candidate| is true, |
241 // |stun_candidate_addr| carries the expected reflective address, which is | 242 // |stun_candidate_addr| carries the expected reflective address, which is |
242 // also the related address for TURN candidate if it is expected. Otherwise, | 243 // also the related address for TURN candidate if it is expected. Otherwise, |
243 // it should be ignore. | 244 // it should be ignore. |
244 void CheckDisableAdapterEnumeration( | 245 void CheckDisableAdapterEnumeration( |
245 uint32 total_ports, | 246 uint32 total_ports, |
| 247 const rtc::IPAddress& host_candidate_addr, |
246 const rtc::IPAddress& stun_candidate_addr, | 248 const rtc::IPAddress& stun_candidate_addr, |
247 const rtc::IPAddress& relay_candidate_udp_transport_addr, | 249 const rtc::IPAddress& relay_candidate_udp_transport_addr, |
248 const rtc::IPAddress& relay_candidate_tcp_transport_addr) { | 250 const rtc::IPAddress& relay_candidate_tcp_transport_addr) { |
249 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 251 if (!session_) { |
250 session_->set_flags(cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION | | 252 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 253 } |
| 254 session_->set_flags(session_->flags() | |
| 255 cricket::PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION | |
251 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); | 256 cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET); |
252 allocator().set_allow_tcp_listen(false); | 257 allocator().set_allow_tcp_listen(false); |
253 session_->StartGettingPorts(); | 258 session_->StartGettingPorts(); |
254 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); | 259 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
255 | 260 |
256 uint32 total_candidates = 0; | 261 uint32 total_candidates = 0; |
| 262 if (!host_candidate_addr.IsNil()) { |
| 263 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], |
| 264 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", |
| 265 rtc::SocketAddress(host_candidate_addr, 0)); |
| 266 ++total_candidates; |
| 267 } |
257 if (!stun_candidate_addr.IsNil()) { | 268 if (!stun_candidate_addr.IsNil()) { |
258 ++total_candidates; | 269 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], |
259 EXPECT_PRED5(CheckCandidate, candidates_[0], | |
260 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", | 270 cricket::ICE_CANDIDATE_COMPONENT_RTP, "stun", "udp", |
261 rtc::SocketAddress(stun_candidate_addr, 0)); | 271 rtc::SocketAddress(stun_candidate_addr, 0)); |
262 EXPECT_EQ( | 272 EXPECT_EQ(rtc::EmptySocketAddressWithFamily( |
263 rtc::EmptySocketAddressWithFamily(candidates_[0].address().family()), | 273 candidates_[total_candidates].address().family()), |
264 candidates_[0].related_address()); | 274 candidates_[total_candidates].related_address()); |
| 275 ++total_candidates; |
265 } | 276 } |
266 if (!relay_candidate_udp_transport_addr.IsNil()) { | 277 if (!relay_candidate_udp_transport_addr.IsNil()) { |
267 ++total_candidates; | 278 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], |
268 EXPECT_PRED5(CheckCandidate, candidates_[1], | |
269 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | 279 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", |
270 rtc::SocketAddress(relay_candidate_udp_transport_addr, 0)); | 280 rtc::SocketAddress(relay_candidate_udp_transport_addr, 0)); |
271 EXPECT_EQ(stun_candidate_addr, candidates_[1].related_address().ipaddr()); | 281 EXPECT_EQ(stun_candidate_addr, |
| 282 candidates_[total_candidates].related_address().ipaddr()); |
| 283 ++total_candidates; |
272 } | 284 } |
273 if (!relay_candidate_tcp_transport_addr.IsNil()) { | 285 if (!relay_candidate_tcp_transport_addr.IsNil()) { |
274 ++total_candidates; | 286 EXPECT_PRED5(CheckCandidate, candidates_[total_candidates], |
275 EXPECT_PRED5(CheckCandidate, candidates_[2], | |
276 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", | 287 cricket::ICE_CANDIDATE_COMPONENT_RTP, "relay", "udp", |
277 rtc::SocketAddress(relay_candidate_tcp_transport_addr, 0)); | 288 rtc::SocketAddress(relay_candidate_tcp_transport_addr, 0)); |
278 EXPECT_EQ(stun_candidate_addr, candidates_[2].related_address().ipaddr()); | 289 EXPECT_EQ(stun_candidate_addr, |
| 290 candidates_[total_candidates].related_address().ipaddr()); |
| 291 ++total_candidates; |
279 } | 292 } |
280 | 293 |
281 EXPECT_EQ(total_candidates, candidates_.size()); | 294 EXPECT_EQ(total_candidates, candidates_.size()); |
282 EXPECT_EQ(total_ports, ports_.size()); | 295 EXPECT_EQ(total_ports, ports_.size()); |
283 } | 296 } |
284 | 297 |
285 protected: | 298 protected: |
286 cricket::BasicPortAllocator& allocator() { | 299 cricket::BasicPortAllocator& allocator() { |
287 return *allocator_; | 300 return *allocator_; |
288 } | 301 } |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 session_->StartGettingPorts(); | 388 session_->StartGettingPorts(); |
376 // Waiting for one second to make sure BasicPortAllocatorSession has not | 389 // Waiting for one second to make sure BasicPortAllocatorSession has not |
377 // called OnAllocate multiple times. In old behavior it's called every 250ms. | 390 // called OnAllocate multiple times. In old behavior it's called every 250ms. |
378 // When there are no network interfaces, each execution of OnAllocate will | 391 // When there are no network interfaces, each execution of OnAllocate will |
379 // result in SignalCandidatesAllocationDone signal. | 392 // result in SignalCandidatesAllocationDone signal. |
380 rtc::Thread::Current()->ProcessMessages(1000); | 393 rtc::Thread::Current()->ProcessMessages(1000); |
381 EXPECT_TRUE(candidate_allocation_done_); | 394 EXPECT_TRUE(candidate_allocation_done_); |
382 EXPECT_EQ(0U, candidates_.size()); | 395 EXPECT_EQ(0U, candidates_.size()); |
383 } | 396 } |
384 | 397 |
| 398 // Test that we could use loopback interface as host candidate. |
| 399 TEST_F(PortAllocatorTest, TestLoopbackNetworkInterface) { |
| 400 AddInterface(kLoopbackAddr); |
| 401 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 402 session_->set_flags(cricket::PORTALLOCATOR_DISABLE_STUN | |
| 403 cricket::PORTALLOCATOR_DISABLE_RELAY | |
| 404 cricket::PORTALLOCATOR_DISABLE_TCP); |
| 405 session_->StartGettingPorts(); |
| 406 EXPECT_TRUE_WAIT(candidate_allocation_done_, kDefaultAllocationTimeout); |
| 407 EXPECT_EQ(1U, candidates_.size()); |
| 408 } |
| 409 |
385 // Tests that we can get all the desired addresses successfully. | 410 // Tests that we can get all the desired addresses successfully. |
386 TEST_F(PortAllocatorTest, TestGetAllPortsWithMinimumStepDelay) { | 411 TEST_F(PortAllocatorTest, TestGetAllPortsWithMinimumStepDelay) { |
387 AddInterface(kClientAddr); | 412 AddInterface(kClientAddr); |
388 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); | 413 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
389 session_->StartGettingPorts(); | 414 session_->StartGettingPorts(); |
390 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); | 415 ASSERT_EQ_WAIT(7U, candidates_.size(), kDefaultAllocationTimeout); |
391 EXPECT_EQ(4U, ports_.size()); | 416 EXPECT_EQ(4U, ports_.size()); |
392 EXPECT_PRED5(CheckCandidate, candidates_[0], | 417 EXPECT_PRED5(CheckCandidate, candidates_[0], |
393 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); | 418 cricket::ICE_CANDIDATE_COMPONENT_RTP, "local", "udp", kClientAddr); |
394 EXPECT_PRED5(CheckCandidate, candidates_[1], | 419 EXPECT_PRED5(CheckCandidate, candidates_[1], |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 | 526 |
502 // Test that we should only get STUN and TURN candidates when adapter | 527 // Test that we should only get STUN and TURN candidates when adapter |
503 // enumeration is disabled. | 528 // enumeration is disabled. |
504 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationBehindNat) { | 529 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationBehindNat) { |
505 AddInterface(kClientAddr); | 530 AddInterface(kClientAddr); |
506 // GTURN is not configured here. | 531 // GTURN is not configured here. |
507 ResetWithStunServerAndNat(kStunAddr); | 532 ResetWithStunServerAndNat(kStunAddr); |
508 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 533 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
509 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, and both STUN and | 534 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, and both STUN and |
510 // TURN/UDP candidates. | 535 // TURN/UDP candidates. |
511 CheckDisableAdapterEnumeration(3U, kNatUdpAddr.ipaddr(), | 536 CheckDisableAdapterEnumeration(3U, rtc::IPAddress(), kNatUdpAddr.ipaddr(), |
512 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); | 537 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); |
513 } | 538 } |
514 | 539 |
515 // Test that even with multiple interfaces, the result should still be one STUN | 540 // Test that even with multiple interfaces, the result should still be one STUN |
516 // and one TURN candidate since we bind to any address (i.e. all 0s). | 541 // and one TURN candidate since we bind to any address (i.e. all 0s). |
517 TEST_F(PortAllocatorTest, | 542 TEST_F(PortAllocatorTest, |
518 TestDisableAdapterEnumerationBehindNatMultipleInterfaces) { | 543 TestDisableAdapterEnumerationBehindNatMultipleInterfaces) { |
519 AddInterface(kPrivateAddr); | 544 AddInterface(kPrivateAddr); |
520 AddInterface(kPrivateAddr2); | 545 AddInterface(kPrivateAddr2); |
521 ResetWithStunServerAndNat(kStunAddr); | 546 ResetWithStunServerAndNat(kStunAddr); |
522 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 547 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
523 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, and both STUN and | 548 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, and both STUN and |
524 // TURN/UDP candidates. | 549 // TURN/UDP candidates. |
525 CheckDisableAdapterEnumeration(3U, kNatUdpAddr.ipaddr(), | 550 CheckDisableAdapterEnumeration(3U, rtc::IPAddress(), kNatUdpAddr.ipaddr(), |
526 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); | 551 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); |
527 } | 552 } |
528 | 553 |
529 // Test that we should get STUN, TURN/UDP and TURN/TCP candidates when a | 554 // Test that we should get STUN, TURN/UDP and TURN/TCP candidates when a |
530 // TURN/TCP server is specified. | 555 // TURN/TCP server is specified. |
531 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationBehindNatWithTcp) { | 556 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationBehindNatWithTcp) { |
532 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); | 557 turn_server_.AddInternalSocket(kTurnTcpIntAddr, cricket::PROTO_TCP); |
533 AddInterface(kClientAddr); | 558 AddInterface(kClientAddr); |
534 // GTURN is not configured here. | 559 // GTURN is not configured here. |
535 ResetWithStunServerAndNat(kStunAddr); | 560 ResetWithStunServerAndNat(kStunAddr); |
536 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); | 561 AddTurnServers(kTurnUdpIntAddr, kTurnTcpIntAddr); |
537 // Expect to see 4 ports - STUN, TURN/UDP, TURN/TCP and TCP port. STUN, | 562 // Expect to see 4 ports - STUN, TURN/UDP, TURN/TCP and TCP port. STUN, |
538 // TURN/UDP, and TURN/TCP candidates. | 563 // TURN/UDP, and TURN/TCP candidates. |
539 CheckDisableAdapterEnumeration(4U, kNatUdpAddr.ipaddr(), | 564 CheckDisableAdapterEnumeration(4U, rtc::IPAddress(), kNatUdpAddr.ipaddr(), |
540 kTurnUdpExtAddr.ipaddr(), | 565 kTurnUdpExtAddr.ipaddr(), |
541 kTurnUdpExtAddr.ipaddr()); | 566 kTurnUdpExtAddr.ipaddr()); |
542 } | 567 } |
543 | 568 |
544 // Test that we should only get STUN and TURN candidates when adapter | 569 // Test that we should only get STUN and TURN candidates when adapter |
545 // enumeration is disabled. Since the endpoint is not behind NAT, the srflx | 570 // enumeration is disabled. Since the endpoint is not behind NAT, the srflx |
546 // address should be the public client interface. | 571 // address should be the public client interface. |
547 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationWithoutNat) { | 572 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationWithoutNat) { |
548 AddInterfaceAsDefaultRoute(kClientAddr); | 573 AddInterfaceAsDefaultRoute(kClientAddr); |
549 ResetWithStunServerNoNat(kStunAddr); | 574 ResetWithStunServerNoNat(kStunAddr); |
550 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); | 575 AddTurnServers(kTurnUdpIntAddr, rtc::SocketAddress()); |
551 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, but only both STUN and | 576 // Expect to see 3 ports: STUN, TURN/UDP and TCP ports, but only both STUN and |
552 // TURN candidates. The STUN candidate should have kClientAddr as srflx | 577 // TURN candidates. The STUN candidate should have kClientAddr as srflx |
553 // address, and TURN candidate with kClientAddr as the related address. | 578 // address, and TURN candidate with kClientAddr as the related address. |
554 CheckDisableAdapterEnumeration(3U, kClientAddr.ipaddr(), | 579 CheckDisableAdapterEnumeration(3U, rtc::IPAddress(), kClientAddr.ipaddr(), |
555 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); | 580 kTurnUdpExtAddr.ipaddr(), rtc::IPAddress()); |
556 } | 581 } |
557 | 582 |
558 // Test that when adapter enumeration is disabled, for endpoints without | 583 // Test that when adapter enumeration is disabled, for endpoints without |
559 // STUN/TURN specified, no candidate is generated. | 584 // STUN/TURN specified, no candidate is generated. |
560 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationWithoutNatOrServers) { | 585 TEST_F(PortAllocatorTest, TestDisableAdapterEnumerationWithoutNatOrServers) { |
561 AddInterfaceAsDefaultRoute(kClientAddr); | 586 AddInterfaceAsDefaultRoute(kClientAddr); |
562 ResetWithNoServersOrNat(); | 587 ResetWithNoServersOrNat(); |
563 // Expect to see 2 ports: STUN and TCP ports, but no candidate. | 588 // Expect to see 2 ports: STUN and TCP ports, but no candidate. |
564 CheckDisableAdapterEnumeration(2U, rtc::IPAddress(), rtc::IPAddress(), | 589 CheckDisableAdapterEnumeration(2U, rtc::IPAddress(), rtc::IPAddress(), |
| 590 rtc::IPAddress(), rtc::IPAddress()); |
| 591 } |
| 592 |
| 593 // Test that when adapter enumeration is disabled, with |
| 594 // PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE specified, for endpoints not behind |
| 595 // a NAT, there are a localhost candidate in addition to a STUN candidate. |
| 596 TEST_F(PortAllocatorTest, |
| 597 TestDisableAdapterEnumerationWithoutNatLocalhostCandidateRequested) { |
| 598 AddInterfaceAsDefaultRoute(kClientAddr); |
| 599 ResetWithStunServerNoNat(kStunAddr); |
| 600 EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); |
| 601 session_->set_flags(cricket::PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE); |
| 602 // Expect to see 2 ports: STUN and TCP ports, localhost candidate and STUN |
| 603 // candidate. |
| 604 CheckDisableAdapterEnumeration(2U, rtc::GetLoopbackIP(AF_INET), |
| 605 kClientAddr.ipaddr(), rtc::IPAddress(), |
565 rtc::IPAddress()); | 606 rtc::IPAddress()); |
566 } | 607 } |
567 | 608 |
568 // Disable for asan, see | 609 // Disable for asan, see |
569 // https://code.google.com/p/webrtc/issues/detail?id=4743 for details. | 610 // https://code.google.com/p/webrtc/issues/detail?id=4743 for details. |
570 #if !defined(ADDRESS_SANITIZER) | 611 #if !defined(ADDRESS_SANITIZER) |
571 | 612 |
572 // Test that we can get OnCandidatesAllocationDone callback when all the ports | 613 // Test that we can get OnCandidatesAllocationDone callback when all the ports |
573 // are disabled. | 614 // are disabled. |
574 TEST_F(PortAllocatorTest, TestDisableAllPorts) { | 615 TEST_F(PortAllocatorTest, TestDisableAllPorts) { |
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1248 AllocationSequenceForTest alloc_sequence( | 1289 AllocationSequenceForTest alloc_sequence( |
1249 static_cast<cricket::BasicPortAllocatorSession*>(session_.get()), | 1290 static_cast<cricket::BasicPortAllocatorSession*>(session_.get()), |
1250 &network1, &config, flag); | 1291 &network1, &config, flag); |
1251 // This simply tests it will not crash if udp_socket_ in the | 1292 // This simply tests it will not crash if udp_socket_ in the |
1252 // AllocationSequence is null, which is chosen in the constructor. | 1293 // AllocationSequence is null, which is chosen in the constructor. |
1253 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); | 1294 cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); |
1254 relay_server.ports.push_back( | 1295 relay_server.ports.push_back( |
1255 cricket::ProtocolAddress(kTurnUdpIntAddr, cricket::PROTO_UDP, false)); | 1296 cricket::ProtocolAddress(kTurnUdpIntAddr, cricket::PROTO_UDP, false)); |
1256 alloc_sequence.CreateTurnPort(relay_server); | 1297 alloc_sequence.CreateTurnPort(relay_server); |
1257 } | 1298 } |
OLD | NEW |