inspector: fix Coverity defects
One defect remains - Coverity believes that a session object is never freed while in reality its lifespan is tied to a libuv socket. PR-URL: https://github.com/nodejs/node/pull/10240 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
This commit is contained in:
parent
b79e83e7f6
commit
3c29b2f851
@ -210,6 +210,7 @@ InspectorSocketServer::InspectorSocketServer(SocketServerDelegate* delegate,
|
|||||||
int port) : loop_(nullptr),
|
int port) : loop_(nullptr),
|
||||||
delegate_(delegate),
|
delegate_(delegate),
|
||||||
port_(port),
|
port_(port),
|
||||||
|
server_(uv_tcp_t()),
|
||||||
closer_(nullptr),
|
closer_(nullptr),
|
||||||
next_session_id_(0) { }
|
next_session_id_(0) { }
|
||||||
|
|
||||||
@ -400,6 +401,7 @@ void InspectorSocketServer::SocketConnectedCallback(uv_stream_t* server,
|
|||||||
int status) {
|
int status) {
|
||||||
if (status == 0) {
|
if (status == 0) {
|
||||||
InspectorSocketServer* socket_server = InspectorSocketServer::From(server);
|
InspectorSocketServer* socket_server = InspectorSocketServer::From(server);
|
||||||
|
// Memory is freed when the socket closes.
|
||||||
SocketSession* session =
|
SocketSession* session =
|
||||||
new SocketSession(socket_server, socket_server->next_session_id_++);
|
new SocketSession(socket_server, socket_server->next_session_id_++);
|
||||||
if (inspector_accept(server, session->Socket(), HandshakeCallback) != 0) {
|
if (inspector_accept(server, session->Socket(), HandshakeCallback) != 0) {
|
||||||
|
@ -370,13 +370,13 @@ class InspectorSocketTest : public ::testing::Test {
|
|||||||
uv_tcp_init(&loop, &client_socket);
|
uv_tcp_init(&loop, &client_socket);
|
||||||
uv_ip4_addr("127.0.0.1", PORT, &addr);
|
uv_ip4_addr("127.0.0.1", PORT, &addr);
|
||||||
uv_tcp_bind(&server, reinterpret_cast<const struct sockaddr*>(&addr), 0);
|
uv_tcp_bind(&server, reinterpret_cast<const struct sockaddr*>(&addr), 0);
|
||||||
int err = uv_listen(reinterpret_cast<uv_stream_t*>(&server),
|
GTEST_ASSERT_EQ(0, uv_listen(reinterpret_cast<uv_stream_t*>(&server),
|
||||||
1, on_new_connection);
|
1, on_new_connection));
|
||||||
GTEST_ASSERT_EQ(0, err);
|
|
||||||
uv_connect_t connect;
|
uv_connect_t connect;
|
||||||
connect.data = nullptr;
|
connect.data = nullptr;
|
||||||
uv_tcp_connect(&connect, &client_socket,
|
GTEST_ASSERT_EQ(0, uv_tcp_connect(&connect, &client_socket,
|
||||||
reinterpret_cast<const sockaddr*>(&addr), on_connection);
|
reinterpret_cast<const sockaddr*>(&addr),
|
||||||
|
on_connection));
|
||||||
uv_tcp_nodelay(&client_socket, 1); // The buffering messes up the test
|
uv_tcp_nodelay(&client_socket, 1); // The buffering messes up the test
|
||||||
SPIN_WHILE(!connect.data || !connected);
|
SPIN_WHILE(!connect.data || !connected);
|
||||||
really_close(reinterpret_cast<uv_handle_t*>(&server));
|
really_close(reinterpret_cast<uv_handle_t*>(&server));
|
||||||
|
@ -86,7 +86,8 @@ class TestInspectorServerDelegate : public SocketServerDelegate {
|
|||||||
public:
|
public:
|
||||||
TestInspectorServerDelegate() : connected(0), disconnected(0),
|
TestInspectorServerDelegate() : connected(0), disconnected(0),
|
||||||
targets_({ MAIN_TARGET_ID,
|
targets_({ MAIN_TARGET_ID,
|
||||||
UNCONNECTABLE_TARGET_ID }) {}
|
UNCONNECTABLE_TARGET_ID }),
|
||||||
|
session_id_(0) {}
|
||||||
|
|
||||||
void Connect(InspectorSocketServer* server) {
|
void Connect(InspectorSocketServer* server) {
|
||||||
server_ = server;
|
server_ = server;
|
||||||
@ -152,6 +153,7 @@ class SocketWrapper {
|
|||||||
explicit SocketWrapper(uv_loop_t* loop) : closed_(false),
|
explicit SocketWrapper(uv_loop_t* loop) : closed_(false),
|
||||||
eof_(false),
|
eof_(false),
|
||||||
loop_(loop),
|
loop_(loop),
|
||||||
|
socket_(uv_tcp_t()),
|
||||||
connected_(false),
|
connected_(false),
|
||||||
sending_(false) { }
|
sending_(false) { }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user