| 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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 msg.Write(&buf); | 44 msg.Write(&buf); |
| 45 Send(buf.Data(), static_cast<int>(buf.Length())); | 45 Send(buf.Data(), static_cast<int>(buf.Length())); |
| 46 } | 46 } |
| 47 void Send(const char* buf, int len) { | 47 void Send(const char* buf, int len) { |
| 48 client_->SendTo(buf, len, server_addr); | 48 client_->SendTo(buf, len, server_addr); |
| 49 } | 49 } |
| 50 bool ReceiveFails() { | 50 bool ReceiveFails() { |
| 51 return(client_->CheckNoPacket()); | 51 return(client_->CheckNoPacket()); |
| 52 } | 52 } |
| 53 StunMessage* Receive() { | 53 StunMessage* Receive() { |
| 54 StunMessage* msg = NULL; | 54 StunMessage* msg = nullptr; |
| 55 rtc::TestClient::Packet* packet = | 55 rtc::TestClient::Packet* packet = |
| 56 client_->NextPacket(rtc::TestClient::kTimeoutMs); | 56 client_->NextPacket(rtc::TestClient::kTimeoutMs); |
| 57 if (packet) { | 57 if (packet) { |
| 58 rtc::ByteBufferReader buf(packet->buf, packet->size); | 58 rtc::ByteBufferReader buf(packet->buf, packet->size); |
| 59 msg = new StunMessage(); | 59 msg = new StunMessage(); |
| 60 msg->Read(&buf); | 60 msg->Read(&buf); |
| 61 delete packet; | 61 delete packet; |
| 62 } | 62 } |
| 63 return msg; | 63 return msg; |
| 64 } | 64 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 75 #if !defined(THREAD_SANITIZER) | 75 #if !defined(THREAD_SANITIZER) |
| 76 | 76 |
| 77 TEST_F(StunServerTest, TestGood) { | 77 TEST_F(StunServerTest, TestGood) { |
| 78 StunMessage req; | 78 StunMessage req; |
| 79 std::string transaction_id = "0123456789ab"; | 79 std::string transaction_id = "0123456789ab"; |
| 80 req.SetType(STUN_BINDING_REQUEST); | 80 req.SetType(STUN_BINDING_REQUEST); |
| 81 req.SetTransactionID(transaction_id); | 81 req.SetTransactionID(transaction_id); |
| 82 Send(req); | 82 Send(req); |
| 83 | 83 |
| 84 StunMessage* msg = Receive(); | 84 StunMessage* msg = Receive(); |
| 85 ASSERT_TRUE(msg != NULL); | 85 ASSERT_TRUE(msg != nullptr); |
| 86 EXPECT_EQ(STUN_BINDING_RESPONSE, msg->type()); | 86 EXPECT_EQ(STUN_BINDING_RESPONSE, msg->type()); |
| 87 EXPECT_EQ(req.transaction_id(), msg->transaction_id()); | 87 EXPECT_EQ(req.transaction_id(), msg->transaction_id()); |
| 88 | 88 |
| 89 const StunAddressAttribute* mapped_addr = | 89 const StunAddressAttribute* mapped_addr = |
| 90 msg->GetAddress(STUN_ATTR_MAPPED_ADDRESS); | 90 msg->GetAddress(STUN_ATTR_MAPPED_ADDRESS); |
| 91 EXPECT_TRUE(mapped_addr != NULL); | 91 EXPECT_TRUE(mapped_addr != nullptr); |
| 92 EXPECT_EQ(1, mapped_addr->family()); | 92 EXPECT_EQ(1, mapped_addr->family()); |
| 93 EXPECT_EQ(client_addr.port(), mapped_addr->port()); | 93 EXPECT_EQ(client_addr.port(), mapped_addr->port()); |
| 94 if (mapped_addr->ipaddr() != client_addr.ipaddr()) { | 94 if (mapped_addr->ipaddr() != client_addr.ipaddr()) { |
| 95 LOG(LS_WARNING) << "Warning: mapped IP (" | 95 LOG(LS_WARNING) << "Warning: mapped IP (" |
| 96 << mapped_addr->ipaddr() | 96 << mapped_addr->ipaddr() |
| 97 << ") != local IP (" << client_addr.ipaddr() | 97 << ") != local IP (" << client_addr.ipaddr() |
| 98 << ")"; | 98 << ")"; |
| 99 } | 99 } |
| 100 | 100 |
| 101 delete msg; | 101 delete msg; |
| 102 } | 102 } |
| 103 | 103 |
| 104 #endif // if !defined(THREAD_SANITIZER) | 104 #endif // if !defined(THREAD_SANITIZER) |
| 105 | 105 |
| 106 TEST_F(StunServerTest, TestBad) { | 106 TEST_F(StunServerTest, TestBad) { |
| 107 const char* bad = "this is a completely nonsensical message whose only " | 107 const char* bad = "this is a completely nonsensical message whose only " |
| 108 "purpose is to make the parser go 'ack'. it doesn't " | 108 "purpose is to make the parser go 'ack'. it doesn't " |
| 109 "look anything like a normal stun message"; | 109 "look anything like a normal stun message"; |
| 110 Send(bad, static_cast<int>(strlen(bad))); | 110 Send(bad, static_cast<int>(strlen(bad))); |
| 111 | 111 |
| 112 ASSERT_TRUE(ReceiveFails()); | 112 ASSERT_TRUE(ReceiveFails()); |
| 113 } | 113 } |
| OLD | NEW |