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

Side by Side Diff: webrtc/p2p/base/turnserver.cc

Issue 1821083002: Split ByteBuffer into writer/reader objects. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months 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
« no previous file with comments | « webrtc/p2p/base/turnserver.h ('k') | webrtc/p2p/stunprober/stunprober.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2012 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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 TurnServerAllocation* allocation = FindAllocation(&conn); 209 TurnServerAllocation* allocation = FindAllocation(&conn);
210 if (allocation) { 210 if (allocation) {
211 allocation->HandleChannelData(data, size); 211 allocation->HandleChannelData(data, size);
212 } 212 }
213 } 213 }
214 } 214 }
215 215
216 void TurnServer::HandleStunMessage(TurnServerConnection* conn, const char* data, 216 void TurnServer::HandleStunMessage(TurnServerConnection* conn, const char* data,
217 size_t size) { 217 size_t size) {
218 TurnMessage msg; 218 TurnMessage msg;
219 rtc::ByteBuffer buf(data, size); 219 rtc::ByteBufferReader buf(data, size);
220 if (!msg.Read(&buf) || (buf.Length() > 0)) { 220 if (!msg.Read(&buf) || (buf.Length() > 0)) {
221 LOG(LS_WARNING) << "Received invalid STUN message"; 221 LOG(LS_WARNING) << "Received invalid STUN message";
222 return; 222 return;
223 } 223 }
224 224
225 // If it's a STUN binding request, handle that specially. 225 // If it's a STUN binding request, handle that specially.
226 if (msg.type() == STUN_BINDING_REQUEST) { 226 if (msg.type() == STUN_BINDING_REQUEST) {
227 HandleBindingRequest(conn, &msg); 227 HandleBindingRequest(conn, &msg);
228 return; 228 return;
229 } 229 }
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 const rtc::SocketAddress& addr) { 482 const rtc::SocketAddress& addr) {
483 TurnMessage resp; 483 TurnMessage resp;
484 InitErrorResponse(msg, STUN_ERROR_TRY_ALTERNATE, 484 InitErrorResponse(msg, STUN_ERROR_TRY_ALTERNATE,
485 STUN_ERROR_REASON_TRY_ALTERNATE_SERVER, &resp); 485 STUN_ERROR_REASON_TRY_ALTERNATE_SERVER, &resp);
486 VERIFY(resp.AddAttribute(new StunAddressAttribute( 486 VERIFY(resp.AddAttribute(new StunAddressAttribute(
487 STUN_ATTR_ALTERNATE_SERVER, addr))); 487 STUN_ATTR_ALTERNATE_SERVER, addr)));
488 SendStun(conn, &resp); 488 SendStun(conn, &resp);
489 } 489 }
490 490
491 void TurnServer::SendStun(TurnServerConnection* conn, StunMessage* msg) { 491 void TurnServer::SendStun(TurnServerConnection* conn, StunMessage* msg) {
492 rtc::ByteBuffer buf; 492 rtc::ByteBufferWriter buf;
493 // Add a SOFTWARE attribute if one is set. 493 // Add a SOFTWARE attribute if one is set.
494 if (!software_.empty()) { 494 if (!software_.empty()) {
495 VERIFY(msg->AddAttribute( 495 VERIFY(msg->AddAttribute(
496 new StunByteStringAttribute(STUN_ATTR_SOFTWARE, software_))); 496 new StunByteStringAttribute(STUN_ATTR_SOFTWARE, software_)));
497 } 497 }
498 msg->Write(&buf); 498 msg->Write(&buf);
499 Send(conn, buf); 499 Send(conn, buf);
500 } 500 }
501 501
502 void TurnServer::Send(TurnServerConnection* conn, 502 void TurnServer::Send(TurnServerConnection* conn,
503 const rtc::ByteBuffer& buf) { 503 const rtc::ByteBufferWriter& buf) {
504 rtc::PacketOptions options; 504 rtc::PacketOptions options;
505 conn->socket()->SendTo(buf.Data(), buf.Length(), conn->src(), options); 505 conn->socket()->SendTo(buf.Data(), buf.Length(), conn->src(), options);
506 } 506 }
507 507
508 void TurnServer::OnAllocationDestroyed(TurnServerAllocation* allocation) { 508 void TurnServer::OnAllocationDestroyed(TurnServerAllocation* allocation) {
509 // Removing the internal socket if the connection is not udp. 509 // Removing the internal socket if the connection is not udp.
510 rtc::AsyncPacketSocket* socket = allocation->conn()->socket(); 510 rtc::AsyncPacketSocket* socket = allocation->conn()->socket();
511 InternalSocketMap::iterator iter = server_sockets_.find(socket); 511 InternalSocketMap::iterator iter = server_sockets_.find(socket);
512 ASSERT(iter != server_sockets_.end()); 512 ASSERT(iter != server_sockets_.end());
513 // Skip if the socket serving this allocation is UDP, as this will be shared 513 // Skip if the socket serving this allocation is UDP, as this will be shared
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 787
788 void TurnServerAllocation::OnExternalPacket( 788 void TurnServerAllocation::OnExternalPacket(
789 rtc::AsyncPacketSocket* socket, 789 rtc::AsyncPacketSocket* socket,
790 const char* data, size_t size, 790 const char* data, size_t size,
791 const rtc::SocketAddress& addr, 791 const rtc::SocketAddress& addr,
792 const rtc::PacketTime& packet_time) { 792 const rtc::PacketTime& packet_time) {
793 ASSERT(external_socket_.get() == socket); 793 ASSERT(external_socket_.get() == socket);
794 Channel* channel = FindChannel(addr); 794 Channel* channel = FindChannel(addr);
795 if (channel) { 795 if (channel) {
796 // There is a channel bound to this address. Send as a channel message. 796 // There is a channel bound to this address. Send as a channel message.
797 rtc::ByteBuffer buf; 797 rtc::ByteBufferWriter buf;
798 buf.WriteUInt16(channel->id()); 798 buf.WriteUInt16(channel->id());
799 buf.WriteUInt16(static_cast<uint16_t>(size)); 799 buf.WriteUInt16(static_cast<uint16_t>(size));
800 buf.WriteBytes(data, size); 800 buf.WriteBytes(data, size);
801 server_->Send(&conn_, buf); 801 server_->Send(&conn_, buf);
802 } else if (HasPermission(addr.ipaddr())) { 802 } else if (HasPermission(addr.ipaddr())) {
803 // No channel, but a permission exists. Send as a data indication. 803 // No channel, but a permission exists. Send as a data indication.
804 TurnMessage msg; 804 TurnMessage msg;
805 msg.SetType(TURN_DATA_INDICATION); 805 msg.SetType(TURN_DATA_INDICATION);
806 msg.SetTransactionID( 806 msg.SetTransactionID(
807 rtc::CreateRandomString(kStunTransactionIdLength)); 807 rtc::CreateRandomString(kStunTransactionIdLength));
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 thread_->PostDelayed(kChannelTimeout, this, MSG_ALLOCATION_TIMEOUT); 948 thread_->PostDelayed(kChannelTimeout, this, MSG_ALLOCATION_TIMEOUT);
949 } 949 }
950 950
951 void TurnServerAllocation::Channel::OnMessage(rtc::Message* msg) { 951 void TurnServerAllocation::Channel::OnMessage(rtc::Message* msg) {
952 ASSERT(msg->message_id == MSG_ALLOCATION_TIMEOUT); 952 ASSERT(msg->message_id == MSG_ALLOCATION_TIMEOUT);
953 SignalDestroyed(this); 953 SignalDestroyed(this);
954 delete this; 954 delete this;
955 } 955 }
956 956
957 } // namespace cricket 957 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/p2p/base/turnserver.h ('k') | webrtc/p2p/stunprober/stunprober.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698