| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2016 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 28 matching lines...) Expand all Loading... |
| 39 static const size_t kPacketSize = 100; | 39 static const size_t kPacketSize = 100; |
| 40 | 40 |
| 41 // Indicates ICE channel has no write error. | 41 // Indicates ICE channel has no write error. |
| 42 static const int kNoWriteError = 0; | 42 static const int kNoWriteError = 0; |
| 43 | 43 |
| 44 // ICE parameters. | 44 // ICE parameters. |
| 45 static const char kIceUfrag[] = "TESTICEUFRAG0001"; | 45 static const char kIceUfrag[] = "TESTICEUFRAG0001"; |
| 46 static const char kIcePwd[] = "TESTICEPWD00000000000001"; | 46 static const char kIcePwd[] = "TESTICEPWD00000000000001"; |
| 47 | 47 |
| 48 // QUIC packet parameters. | 48 // QUIC packet parameters. |
| 49 static const net::IPAddressNumber kIpAddress(net::kIPv4AddressSize, 0); | 49 static const net::IPAddress kIpAddress(0, 0, 0, 0); |
| 50 static const net::IPEndPoint kIpEndpoint(kIpAddress, 0); | 50 static const net::IPEndPoint kIpEndpoint(kIpAddress, 0); |
| 51 | 51 |
| 52 // Detects incoming RTP packets. | 52 // Detects incoming RTP packets. |
| 53 static bool IsRtpLeadByte(uint8_t b) { | 53 static bool IsRtpLeadByte(uint8_t b) { |
| 54 return (b & 0xC0) == 0x80; | 54 return (b & 0xC0) == 0x80; |
| 55 } | 55 } |
| 56 | 56 |
| 57 // Maps SSL role to ICE connection role. The peer with a client role is assumed | 57 // Maps SSL role to ICE connection role. The peer with a client role is assumed |
| 58 // to be the one who initiates the connection. | 58 // to be the one who initiates the connection. |
| 59 static ConnectionRole SslRoleToConnectionRole(rtc::SSLRole ssl_role) { | 59 static ConnectionRole SslRoleToConnectionRole(rtc::SSLRole ssl_role) { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 } | 137 } |
| 138 | 138 |
| 139 // Creates fingerprint from certificate. | 139 // Creates fingerprint from certificate. |
| 140 rtc::SSLFingerprint* CreateFingerprint(rtc::RTCCertificate* cert) { | 140 rtc::SSLFingerprint* CreateFingerprint(rtc::RTCCertificate* cert) { |
| 141 std::string digest_algorithm; | 141 std::string digest_algorithm; |
| 142 bool get_digest_algorithm = | 142 bool get_digest_algorithm = |
| 143 cert->ssl_certificate().GetSignatureDigestAlgorithm(&digest_algorithm); | 143 cert->ssl_certificate().GetSignatureDigestAlgorithm(&digest_algorithm); |
| 144 if (!get_digest_algorithm || digest_algorithm.empty()) { | 144 if (!get_digest_algorithm || digest_algorithm.empty()) { |
| 145 return nullptr; | 145 return nullptr; |
| 146 } | 146 } |
| 147 scoped_ptr<rtc::SSLFingerprint> fingerprint( | 147 rtc::scoped_ptr<rtc::SSLFingerprint> fingerprint( |
| 148 rtc::SSLFingerprint::Create(digest_algorithm, cert->identity())); | 148 rtc::SSLFingerprint::Create(digest_algorithm, cert->identity())); |
| 149 if (digest_algorithm != rtc::DIGEST_SHA_256) { | 149 if (digest_algorithm != rtc::DIGEST_SHA_256) { |
| 150 return nullptr; | 150 return nullptr; |
| 151 } | 151 } |
| 152 return fingerprint.release(); | 152 return fingerprint.release(); |
| 153 } | 153 } |
| 154 | 154 |
| 155 // Sends SRTP packet to the other peer via |quic_channel_|. | 155 // Sends SRTP packet to the other peer via |quic_channel_|. |
| 156 int SendSrtpPacket() { | 156 int SendSrtpPacket() { |
| 157 char packet[kPacketSize]; | 157 char packet[kPacketSize]; |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 TEST_F(QuicTransportChannelTest, QuicWritePacket) { | 402 TEST_F(QuicTransportChannelTest, QuicWritePacket) { |
| 403 peer1_.ice_channel()->Connect(); | 403 peer1_.ice_channel()->Connect(); |
| 404 peer2_.ice_channel()->Connect(); | 404 peer2_.ice_channel()->Connect(); |
| 405 peer1_.ice_channel()->SetDestination(peer2_.ice_channel()); | 405 peer1_.ice_channel()->SetDestination(peer2_.ice_channel()); |
| 406 std::string packet = "FAKEQUICPACKET"; | 406 std::string packet = "FAKEQUICPACKET"; |
| 407 | 407 |
| 408 // QUIC should be write blocked when the ICE channel is not writable. | 408 // QUIC should be write blocked when the ICE channel is not writable. |
| 409 peer1_.ice_channel()->SetWritable(false); | 409 peer1_.ice_channel()->SetWritable(false); |
| 410 EXPECT_TRUE(peer1_.quic_channel()->IsWriteBlocked()); | 410 EXPECT_TRUE(peer1_.quic_channel()->IsWriteBlocked()); |
| 411 net::WriteResult write_blocked_result = peer1_.quic_channel()->WritePacket( | 411 net::WriteResult write_blocked_result = peer1_.quic_channel()->WritePacket( |
| 412 packet.data(), packet.size(), kIpAddress, kIpEndpoint); | 412 packet.data(), packet.size(), kIpAddress, kIpEndpoint, nullptr); |
| 413 EXPECT_EQ(net::WRITE_STATUS_BLOCKED, write_blocked_result.status); | 413 EXPECT_EQ(net::WRITE_STATUS_BLOCKED, write_blocked_result.status); |
| 414 EXPECT_EQ(EWOULDBLOCK, write_blocked_result.error_code); | 414 EXPECT_EQ(EWOULDBLOCK, write_blocked_result.error_code); |
| 415 | 415 |
| 416 // QUIC should ignore errors when the ICE channel is writable. | 416 // QUIC should ignore errors when the ICE channel is writable. |
| 417 peer1_.ice_channel()->SetWritable(true); | 417 peer1_.ice_channel()->SetWritable(true); |
| 418 EXPECT_FALSE(peer1_.quic_channel()->IsWriteBlocked()); | 418 EXPECT_FALSE(peer1_.quic_channel()->IsWriteBlocked()); |
| 419 peer1_.SetWriteError(EWOULDBLOCK); | 419 peer1_.SetWriteError(EWOULDBLOCK); |
| 420 net::WriteResult ignore_error_result = peer1_.quic_channel()->WritePacket( | 420 net::WriteResult ignore_error_result = peer1_.quic_channel()->WritePacket( |
| 421 packet.data(), packet.size(), kIpAddress, kIpEndpoint); | 421 packet.data(), packet.size(), kIpAddress, kIpEndpoint, nullptr); |
| 422 EXPECT_EQ(net::WRITE_STATUS_OK, ignore_error_result.status); | 422 EXPECT_EQ(net::WRITE_STATUS_OK, ignore_error_result.status); |
| 423 EXPECT_EQ(0, ignore_error_result.bytes_written); | 423 EXPECT_EQ(0, ignore_error_result.bytes_written); |
| 424 | 424 |
| 425 peer1_.SetWriteError(kNoWriteError); | 425 peer1_.SetWriteError(kNoWriteError); |
| 426 net::WriteResult no_error_result = peer1_.quic_channel()->WritePacket( | 426 net::WriteResult no_error_result = peer1_.quic_channel()->WritePacket( |
| 427 packet.data(), packet.size(), kIpAddress, kIpEndpoint); | 427 packet.data(), packet.size(), kIpAddress, kIpEndpoint, nullptr); |
| 428 EXPECT_EQ(net::WRITE_STATUS_OK, no_error_result.status); | 428 EXPECT_EQ(net::WRITE_STATUS_OK, no_error_result.status); |
| 429 EXPECT_EQ(static_cast<int>(packet.size()), no_error_result.bytes_written); | 429 EXPECT_EQ(static_cast<int>(packet.size()), no_error_result.bytes_written); |
| 430 } | 430 } |
| 431 | 431 |
| 432 // Test that SSL roles can be reversed before QUIC handshake. | 432 // Test that SSL roles can be reversed before QUIC handshake. |
| 433 TEST_F(QuicTransportChannelTest, QuicRoleReversalBeforeQuic) { | 433 TEST_F(QuicTransportChannelTest, QuicRoleReversalBeforeQuic) { |
| 434 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_SERVER)); | 434 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_SERVER)); |
| 435 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_CLIENT)); | 435 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_CLIENT)); |
| 436 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_SERVER)); | 436 EXPECT_TRUE(peer1_.quic_channel()->SetSslRole(rtc::SSL_SERVER)); |
| 437 } | 437 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 | 479 |
| 480 // Test that if the ICE channel becomes receiving before the QUIC channel is | 480 // Test that if the ICE channel becomes receiving before the QUIC channel is |
| 481 // connected, then the QUIC channel becomes receiving. | 481 // connected, then the QUIC channel becomes receiving. |
| 482 TEST_F(QuicTransportChannelTest, IceReceivingBeforeConnected) { | 482 TEST_F(QuicTransportChannelTest, IceReceivingBeforeConnected) { |
| 483 Connect(); | 483 Connect(); |
| 484 peer1_.ice_channel()->SetReceiving(true); | 484 peer1_.ice_channel()->SetReceiving(true); |
| 485 ASSERT_TRUE(peer1_.ice_channel()->receiving()); | 485 ASSERT_TRUE(peer1_.ice_channel()->receiving()); |
| 486 ASSERT_TRUE_WAIT(quic_connected(), kTimeoutMs); | 486 ASSERT_TRUE_WAIT(quic_connected(), kTimeoutMs); |
| 487 EXPECT_TRUE(peer1_.quic_channel()->receiving()); | 487 EXPECT_TRUE(peer1_.quic_channel()->receiving()); |
| 488 } | 488 } |
| OLD | NEW |