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

Side by Side Diff: webrtc/p2p/base/relayserver.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/relayport.cc ('k') | webrtc/p2p/base/relayserver_unittest.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 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 28 matching lines...) Expand all
39 << " bytes"; 39 << " bytes";
40 } else if (result < 0) { 40 } else if (result < 0) {
41 LOG_ERR(LS_ERROR) << "SendTo"; 41 LOG_ERR(LS_ERROR) << "SendTo";
42 } 42 }
43 } 43 }
44 44
45 // Sends the given STUN message on the given socket. 45 // Sends the given STUN message on the given socket.
46 void SendStun(const StunMessage& msg, 46 void SendStun(const StunMessage& msg,
47 rtc::AsyncPacketSocket* socket, 47 rtc::AsyncPacketSocket* socket,
48 const rtc::SocketAddress& addr) { 48 const rtc::SocketAddress& addr) {
49 rtc::ByteBuffer buf; 49 rtc::ByteBufferWriter buf;
50 msg.Write(&buf); 50 msg.Write(&buf);
51 Send(socket, buf.Data(), buf.Length(), addr); 51 Send(socket, buf.Data(), buf.Length(), addr);
52 } 52 }
53 53
54 // Constructs a STUN error response and sends it on the given socket. 54 // Constructs a STUN error response and sends it on the given socket.
55 void SendStunError(const StunMessage& msg, rtc::AsyncPacketSocket* socket, 55 void SendStunError(const StunMessage& msg, rtc::AsyncPacketSocket* socket,
56 const rtc::SocketAddress& remote_addr, int error_code, 56 const rtc::SocketAddress& remote_addr, int error_code,
57 const char* error_desc, const std::string& magic_cookie) { 57 const char* error_desc, const std::string& magic_cookie) {
58 RelayMessage err_msg; 58 RelayMessage err_msg;
59 err_msg.SetType(GetStunErrorResponseType(msg.type())); 59 err_msg.SetType(GetStunErrorResponseType(msg.type()));
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 ext_conn->addr_pair().source()); 242 ext_conn->addr_pair().source());
243 ASSERT(int_conn != NULL); 243 ASSERT(int_conn != NULL);
244 int_conn->Send(bytes, size, ext_conn->addr_pair().source()); 244 int_conn->Send(bytes, size, ext_conn->addr_pair().source());
245 ext_conn->Lock(); // allow outgoing packets 245 ext_conn->Lock(); // allow outgoing packets
246 return; 246 return;
247 } 247 }
248 248
249 // The first packet should always be a STUN / TURN packet. If it isn't, then 249 // The first packet should always be a STUN / TURN packet. If it isn't, then
250 // we should just ignore this packet. 250 // we should just ignore this packet.
251 RelayMessage msg; 251 RelayMessage msg;
252 rtc::ByteBuffer buf(bytes, size); 252 rtc::ByteBufferReader buf(bytes, size);
253 if (!msg.Read(&buf)) { 253 if (!msg.Read(&buf)) {
254 LOG(LS_WARNING) << "Dropping packet: first packet not STUN"; 254 LOG(LS_WARNING) << "Dropping packet: first packet not STUN";
255 return; 255 return;
256 } 256 }
257 257
258 // The initial packet should have a username (which identifies the binding). 258 // The initial packet should have a username (which identifies the binding).
259 const StunByteStringAttribute* username_attr = 259 const StunByteStringAttribute* username_attr =
260 msg.GetByteString(STUN_ATTR_USERNAME); 260 msg.GetByteString(STUN_ATTR_USERNAME);
261 if (!username_attr) { 261 if (!username_attr) {
262 LOG(LS_WARNING) << "Dropping packet: no username"; 262 LOG(LS_WARNING) << "Dropping packet: no username";
(...skipping 28 matching lines...) Expand all
291 ASSERT(int_conn != NULL); 291 ASSERT(int_conn != NULL);
292 int_conn->Send(bytes, size, ext_conn->addr_pair().source()); 292 int_conn->Send(bytes, size, ext_conn->addr_pair().source());
293 } 293 }
294 294
295 bool RelayServer::HandleStun( 295 bool RelayServer::HandleStun(
296 const char* bytes, size_t size, const rtc::SocketAddress& remote_addr, 296 const char* bytes, size_t size, const rtc::SocketAddress& remote_addr,
297 rtc::AsyncPacketSocket* socket, std::string* username, 297 rtc::AsyncPacketSocket* socket, std::string* username,
298 StunMessage* msg) { 298 StunMessage* msg) {
299 299
300 // Parse this into a stun message. Eat the message if this fails. 300 // Parse this into a stun message. Eat the message if this fails.
301 rtc::ByteBuffer buf(bytes, size); 301 rtc::ByteBufferReader buf(bytes, size);
302 if (!msg->Read(&buf)) { 302 if (!msg->Read(&buf)) {
303 return false; 303 return false;
304 } 304 }
305 305
306 // The initial packet should have a username (which identifies the binding). 306 // The initial packet should have a username (which identifies the binding).
307 const StunByteStringAttribute* username_attr = 307 const StunByteStringAttribute* username_attr =
308 msg->GetByteString(STUN_ATTR_USERNAME); 308 msg->GetByteString(STUN_ATTR_USERNAME);
309 if (!username_attr) { 309 if (!username_attr) {
310 SendStunError(*msg, socket, remote_addr, 432, "Missing Username", ""); 310 SendStunError(*msg, socket, remote_addr, 432, "Missing Username", "");
311 return false; 311 return false;
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 } else { 741 } else {
742 server_->thread()->PostDelayed(lifetime_, this, MSG_LIFETIME_TIMER); 742 server_->thread()->PostDelayed(lifetime_, this, MSG_LIFETIME_TIMER);
743 } 743 }
744 744
745 } else { 745 } else {
746 ASSERT(false); 746 ASSERT(false);
747 } 747 }
748 } 748 }
749 749
750 } // namespace cricket 750 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/p2p/base/relayport.cc ('k') | webrtc/p2p/base/relayserver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698