summaryrefslogtreecommitdiff
path: root/src/inspector_socket.h
diff options
context:
space:
mode:
authorEugene Ostroukhov <eostroukhov@chromium.org>2016-09-14 10:15:38 -0700
committerAli Ijaz Sheikh <ofrobots@google.com>2016-09-20 10:20:06 -0700
commitbc1ebd67d848da512dce7e96afde5d9bfa7ca8b5 (patch)
tree2dcbdef1fcd8d6cf7fe655a0ef25ecdab0b594d7 /src/inspector_socket.h
parentbe07458b11b74e7920097c1c1d997fe29ccc3c1d (diff)
downloadnode-new-bc1ebd67d848da512dce7e96afde5d9bfa7ca8b5.tar.gz
inspector: zero out structure members
Ctor has to be added as memset to 0 is no longer an option, since the structure now has std::vector member. Attempt at fixing nodejs/node#8155 (so far I was not able to repro it) PR-URL: https://github.com/nodejs/node/pull/8536 Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'src/inspector_socket.h')
-rw-r--r--src/inspector_socket.h46
1 files changed, 29 insertions, 17 deletions
diff --git a/src/inspector_socket.h b/src/inspector_socket.h
index de57d09e98..558d87bcb7 100644
--- a/src/inspector_socket.h
+++ b/src/inspector_socket.h
@@ -9,6 +9,9 @@
#include <string>
#include <vector>
+namespace node {
+namespace inspector {
+
enum inspector_handshake_event {
kInspectorHandshakeUpgrading,
kInspectorHandshakeUpgraded,
@@ -16,13 +19,13 @@ enum inspector_handshake_event {
kInspectorHandshakeFailed
};
-struct inspector_socket_s;
+class InspectorSocket;
-typedef void (*inspector_cb)(struct inspector_socket_s*, int);
+typedef void (*inspector_cb)(InspectorSocket*, int);
// Notifies as handshake is progressing. Returning false as a response to
// kInspectorHandshakeUpgrading or kInspectorHandshakeHttpGet event will abort
// the connection. inspector_write can be used from the callback.
-typedef bool (*handshake_cb)(struct inspector_socket_s*,
+typedef bool (*handshake_cb)(InspectorSocket*,
enum inspector_handshake_event state,
const std::string& path);
@@ -45,7 +48,12 @@ struct ws_state_s {
bool received_close;
};
-struct inspector_socket_s {
+class InspectorSocket {
+ public:
+ InspectorSocket() : data(nullptr), http_parsing_state(nullptr),
+ ws_state(nullptr), buffer(0), ws_mode(false),
+ shutting_down(false), connection_eof(false) { }
+ void reinit();
void* data;
struct http_parsing_state_s* http_parsing_state;
struct ws_state_s* ws_state;
@@ -54,35 +62,39 @@ struct inspector_socket_s {
bool ws_mode;
bool shutting_down;
bool connection_eof;
+ private:
+ DISALLOW_COPY_AND_ASSIGN(InspectorSocket);
};
-typedef struct inspector_socket_s inspector_socket_t;
-
-int inspector_accept(uv_stream_t* server, struct inspector_socket_s* inspector,
+int inspector_accept(uv_stream_t* server, InspectorSocket* inspector,
handshake_cb callback);
-void inspector_close(struct inspector_socket_s* inspector,
+void inspector_close(InspectorSocket* inspector,
inspector_cb callback);
// Callbacks will receive stream handles. Use inspector_from_stream to get
-// inspector_socket_t* from the stream handle.
-int inspector_read_start(struct inspector_socket_s* inspector, uv_alloc_cb,
+// InspectorSocket* from the stream handle.
+int inspector_read_start(InspectorSocket* inspector, uv_alloc_cb,
uv_read_cb);
-void inspector_read_stop(struct inspector_socket_s* inspector);
-void inspector_write(struct inspector_socket_s* inspector,
+void inspector_read_stop(InspectorSocket* inspector);
+void inspector_write(InspectorSocket* inspector,
const char* data, size_t len);
-bool inspector_is_active(const struct inspector_socket_s* inspector);
+bool inspector_is_active(const InspectorSocket* inspector);
-inline inspector_socket_t* inspector_from_stream(uv_tcp_t* stream) {
- return node::ContainerOf(&inspector_socket_t::client, stream);
+inline InspectorSocket* inspector_from_stream(uv_tcp_t* stream) {
+ return node::ContainerOf(&InspectorSocket::client, stream);
}
-inline inspector_socket_t* inspector_from_stream(uv_stream_t* stream) {
+inline InspectorSocket* inspector_from_stream(uv_stream_t* stream) {
return inspector_from_stream(reinterpret_cast<uv_tcp_t*>(stream));
}
-inline inspector_socket_t* inspector_from_stream(uv_handle_t* stream) {
+inline InspectorSocket* inspector_from_stream(uv_handle_t* stream) {
return inspector_from_stream(reinterpret_cast<uv_tcp_t*>(stream));
}
+} // namespace inspector
+} // namespace node
+
+
#endif // SRC_INSPECTOR_SOCKET_H_