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

Side by Side Diff: components/devtools_bridge/socket_tunnel_packet_handler.cc

Issue 1142463003: Remove devtools_bridge component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/devtools_bridge/socket_tunnel_packet_handler.h"
6
7 #include <stdlib.h>
8
9 #include "components/devtools_bridge/socket_tunnel_connection.h"
10 #include "net/base/io_buffer.h"
11 #include "net/base/net_errors.h"
12
13 namespace devtools_bridge {
14
15 static const int kControlConnectionId =
16 SocketTunnelConnection::kControlConnectionId;
17 static const int kMinConnectionId = SocketTunnelConnection::kMinConnectionId;
18 static const int kMaxConnectionId = SocketTunnelConnection::kMaxConnectionId;
19 static const int kControlPacketSizeBytes =
20 SocketTunnelConnection::kControlPacketSizeBytes;
21
22 void SocketTunnelPacketHandler::DecodePacket(const void* data, size_t length) {
23 const unsigned char* bytes = static_cast<const unsigned char*>(data);
24 if (length == 0) {
25 DLOG(ERROR) << "Empty packet";
26 HandleProtocolError();
27 return;
28 }
29 int connection_id = bytes[0];
30 if (connection_id != kControlConnectionId) {
31 if (connection_id < kMinConnectionId ||
32 connection_id > kMaxConnectionId) {
33 DLOG(ERROR) << "Invalid connection ID: " << connection_id;
34 HandleProtocolError();
35 return;
36 }
37
38 int connection_index = connection_id - kMinConnectionId;
39 scoped_refptr<net::IOBufferWithSize> packet(
40 new net::IOBufferWithSize(length - 1));
41 memcpy(packet->data(), bytes + 1, length - 1);
42 HandleDataPacket(connection_index, packet);
43 } else if (length >= kControlPacketSizeBytes) {
44 static_assert(kControlPacketSizeBytes == 3,
45 "kControlPacketSizeBytes should equal 3");
46
47 int op_code = bytes[1];
48 connection_id = bytes[2];
49 if (connection_id < kMinConnectionId ||
50 connection_id > kMaxConnectionId) {
51 DLOG(ERROR) << "Invalid connection ID: " << connection_id;
52 HandleProtocolError();
53 return;
54 }
55 int connection_index = connection_id - kMinConnectionId;
56 HandleControlPacket(connection_index, op_code);
57 } else {
58 DLOG(ERROR) << "Invalid packet";
59 HandleProtocolError();
60 return;
61 }
62 }
63
64 } // namespace devtools_bridge
OLDNEW
« no previous file with comments | « components/devtools_bridge/socket_tunnel_packet_handler.h ('k') | components/devtools_bridge/socket_tunnel_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698