| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent d24491c commit c77078f
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -137,6 +137,23 @@ void SendProtocolJson(InspectorSocket* socket) { | |||
| 137 | 137 | SendHttpResponse(socket, data); | |
| 138 | 138 | } | |
| 139 | 139 | ||
| 140 | + int GetPort(uv_tcp_t* socket, int* out_port) { | ||
| 141 | + sockaddr_storage addr; | ||
| 142 | + int len = sizeof(addr); | ||
| 143 | + int err = uv_tcp_getsockname(socket, | ||
| 144 | + reinterpret_cast<struct sockaddr*>(&addr), | ||
| 145 | + &len); | ||
| 146 | + if (err != 0) | ||
| 147 | + return err; | ||
| 148 | + int port; | ||
| 149 | + if (addr.ss_family == AF_INET6) | ||
| 150 | + port = reinterpret_cast<const sockaddr_in6*>(&addr)->sin6_port; | ||
| 151 | + else | ||
| 152 | + port = reinterpret_cast<const sockaddr_in*>(&addr)->sin_port; | ||
| 153 | + *out_port = ntohs(port); | ||
| 154 | + return err; | ||
| 155 | + } | ||
| 156 | + | ||
| 140 | 157 | } // namespace | |
| 141 | 158 | ||
| 142 | 159 | ||
@@ -339,6 +356,8 @@ bool InspectorSocketServer::Start(uv_loop_t* loop) { | |||
| 339 | 356 | uv_ip4_addr("0.0.0.0", port_, &addr); | |
| 340 | 357 | int err = uv_tcp_bind(&server_, | |
| 341 | 358 | reinterpret_cast<const struct sockaddr*>(&addr), 0); | |
| 359 | + if (err == 0) | ||
| 360 | + err = GetPort(&server_, &port_); | ||
| 342 | 361 | if (err == 0) { | |
| 343 | 362 | err = uv_listen(reinterpret_cast<uv_stream_t*>(&server_), 1, | |
| 344 | 363 | SocketConnectedCallback); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,6 +39,9 @@ class InspectorSocketServer { | |||
| 39 | 39 | void Stop(ServerCallback callback); | |
| 40 | 40 | void Send(int session_id, const std::string& message); | |
| 41 | 41 | void TerminateConnections(ServerCallback callback); | |
| 42 | + int port() { | ||
| 43 | + return port_; | ||
| 44 | + } | ||
| 42 | 45 | ||
| 43 | 46 | private: | |
| 44 | 47 | static bool HandshakeCallback(InspectorSocket* socket, | |
@@ -62,7 +65,7 @@ class InspectorSocketServer { | |||
| 62 | 65 | ||
| 63 | 66 | uv_loop_t* loop_; | |
| 64 | 67 | SocketServerDelegate* const delegate_; | |
| 65 | - const int port_; | ||
| 68 | + int port_; | ||
| 66 | 69 | std::string path_; | |
| 67 | 70 | uv_tcp_t server_; | |
| 68 | 71 | Closer* closer_; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,7 +6,6 @@ | |||
| 6 | 6 | #include <algorithm> | |
| 7 | 7 | #include <sstream> | |
| 8 | 8 | ||
| 9 | - static const int PORT = 9229; | ||
| 10 | 9 | static uv_loop_t loop; | |
| 11 | 10 | ||
| 12 | 11 | static const char CLIENT_CLOSE_FRAME[] = "\x88\x80\x2D\x0E\x1E\xFA"; | |
@@ -165,7 +164,7 @@ class SocketWrapper { | |||
| 165 | 164 | contents_.clear(); | |
| 166 | 165 | uv_tcp_init(loop_, &socket_); | |
| 167 | 166 | sockaddr_in addr; | |
| 168 | - uv_ip4_addr(host.c_str(), PORT, &addr); | ||
| 167 | + uv_ip4_addr(host.c_str(), port, &addr); | ||
| 169 | 168 | int err = uv_tcp_connect(&connect_, &socket_, | |
| 170 | 169 | reinterpret_cast<const sockaddr*>(&addr), | |
| 171 | 170 | Connected_); | |
@@ -183,7 +182,7 @@ class SocketWrapper { | |||
| 183 | 182 | contents_.clear(); | |
| 184 | 183 | uv_tcp_init(loop_, &socket_); | |
| 185 | 184 | sockaddr_in addr; | |
| 186 | - uv_ip4_addr(host.c_str(), PORT, &addr); | ||
| 185 | + uv_ip4_addr(host.c_str(), port, &addr); | ||
| 187 | 186 | int err = uv_tcp_connect(&connect_, &socket_, | |
| 188 | 187 | reinterpret_cast<const sockaddr*>(&addr), | |
| 189 | 188 | ConnectionMustFail_); | |
@@ -310,6 +309,10 @@ class ServerHolder { | |||
| 310 | 309 | return &server_; | |
| 311 | 310 | } | |
| 312 | 311 | ||
| 312 | + int port() { | ||
| 313 | + return server_.port(); | ||
| 314 | + } | ||
| 315 | + | ||
| 313 | 316 | static void CloseCallback(InspectorSocketServer* server) { | |
| 314 | 317 | ServerHolder* holder = node::ContainerOf(&ServerHolder::server_, server); | |
| 315 | 318 | holder->closed = true; | |
@@ -377,12 +380,12 @@ static const std::string WsHandshakeRequest(const std::string& target_id) { | |||
| 377 | 380 | ||
| 378 | 381 | TEST_F(InspectorSocketServerTest, InspectorSessions) { | |
| 379 | 382 | TestInspectorServerDelegate delegate; | |
| 380 | - ServerHolder server(&delegate, PORT); | ||
| 383 | + ServerHolder server(&delegate, 0); | ||
| 381 | 384 | ASSERT_TRUE(server->Start(&loop)); | |
| 382 | 385 | ||
| 383 | 386 | SocketWrapper well_behaved_socket(&loop); | |
| 384 | 387 | // Regular connection | |
| 385 | - well_behaved_socket.Connect("0.0.0.0", PORT); | ||
| 388 | + well_behaved_socket.Connect("0.0.0.0", server.port()); | ||
| 386 | 389 | well_behaved_socket.Write(WsHandshakeRequest(MAIN_TARGET_ID)); | |
| 387 | 390 | well_behaved_socket.Expect(WS_HANDSHAKE_RESPONSE); | |
| 388 | 391 | ||
@@ -405,7 +408,7 @@ TEST_F(InspectorSocketServerTest, InspectorSessions) { | |||
| 405 | 408 | ||
| 406 | 409 | // Declined connection | |
| 407 | 410 | SocketWrapper declined_target_socket(&loop); | |
| 408 | - declined_target_socket.Connect("127.0.0.1", PORT); | ||
| 411 | + declined_target_socket.Connect("127.0.0.1", server.port()); | ||
| 409 | 412 | declined_target_socket.Write(WsHandshakeRequest(UNCONNECTABLE_TARGET_ID)); | |
| 410 | 413 | declined_target_socket.Expect("HTTP/1.0 400 Bad Request"); | |
| 411 | 414 | declined_target_socket.ExpectEOF(); | |
@@ -414,7 +417,7 @@ TEST_F(InspectorSocketServerTest, InspectorSessions) { | |||
| 414 | 417 | ||
| 415 | 418 | // Bogus target - start session callback should not even be invoked | |
| 416 | 419 | SocketWrapper bogus_target_socket(&loop); | |
| 417 | - bogus_target_socket.Connect("127.0.0.1", PORT); | ||
| 420 | + bogus_target_socket.Connect("127.0.0.1", server.port()); | ||
| 418 | 421 | bogus_target_socket.Write(WsHandshakeRequest("bogus_target")); | |
| 419 | 422 | bogus_target_socket.Expect("HTTP/1.0 400 Bad Request"); | |
| 420 | 423 | bogus_target_socket.ExpectEOF(); | |
@@ -423,7 +426,7 @@ TEST_F(InspectorSocketServerTest, InspectorSessions) { | |||
| 423 | 426 | ||
| 424 | 427 | // Drop connection (no proper close frames) | |
| 425 | 428 | SocketWrapper dropped_connection_socket(&loop); | |
| 426 | - dropped_connection_socket.Connect("127.0.0.1", PORT); | ||
| 429 | + dropped_connection_socket.Connect("127.0.0.1", server.port()); | ||
| 427 | 430 | dropped_connection_socket.Write(WsHandshakeRequest(MAIN_TARGET_ID)); | |
| 428 | 431 | dropped_connection_socket.Expect(WS_HANDSHAKE_RESPONSE); | |
| 429 | 432 | ||
@@ -437,7 +440,7 @@ TEST_F(InspectorSocketServerTest, InspectorSessions) { | |||
| 437 | 440 | ||
| 438 | 441 | // Reconnect regular connection | |
| 439 | 442 | SocketWrapper stays_till_termination_socket(&loop); | |
| 440 | - stays_till_termination_socket.Connect("127.0.0.1", PORT); | ||
| 443 | + stays_till_termination_socket.Connect("127.0.0.1", server.port()); | ||
| 441 | 444 | stays_till_termination_socket.Write(WsHandshakeRequest(MAIN_TARGET_ID)); | |
| 442 | 445 | stays_till_termination_socket.Expect(WS_HANDSHAKE_RESPONSE); | |
| 443 | 446 | ||
@@ -464,7 +467,7 @@ TEST_F(InspectorSocketServerTest, InspectorSessions) { | |||
| 464 | 467 | ||
| 465 | 468 | TEST_F(InspectorSocketServerTest, ServerDoesNothing) { | |
| 466 | 469 | TestInspectorServerDelegate delegate; | |
| 467 | - ServerHolder server(&delegate, PORT); | ||
| 470 | + ServerHolder server(&delegate, 0); | ||
| 468 | 471 | ASSERT_TRUE(server->Start(&loop)); | |
| 469 | 472 | ||
| 470 | 473 | server->Stop(ServerHolder::CloseCallback); | |
@@ -474,14 +477,14 @@ TEST_F(InspectorSocketServerTest, ServerDoesNothing) { | |||
| 474 | 477 | ||
| 475 | 478 | TEST_F(InspectorSocketServerTest, ServerWithoutTargets) { | |
| 476 | 479 | ServerDelegateNoTargets delegate; | |
| 477 | - ServerHolder server(&delegate, PORT); | ||
| 480 | + ServerHolder server(&delegate, 0); | ||
| 478 | 481 | ASSERT_TRUE(server->Start(&loop)); | |
| 479 | - TestHttpRequest(PORT, "/json/list", "[ ]"); | ||
| 480 | - TestHttpRequest(PORT, "/json", "[ ]"); | ||
| 482 | + TestHttpRequest(server.port(), "/json/list", "[ ]"); | ||
| 483 | + TestHttpRequest(server.port(), "/json", "[ ]"); | ||
| 481 | 484 | ||
| 482 | 485 | // Declined connection | |
| 483 | 486 | SocketWrapper socket(&loop); | |
| 484 | - socket.Connect("0.0.0.0", PORT); | ||
| 487 | + socket.Connect("0.0.0.0", server.port()); | ||
| 485 | 488 | socket.Write(WsHandshakeRequest(UNCONNECTABLE_TARGET_ID)); | |
| 486 | 489 | socket.Expect("HTTP/1.0 400 Bad Request"); | |
| 487 | 490 | socket.ExpectEOF(); | |
@@ -492,9 +495,9 @@ TEST_F(InspectorSocketServerTest, ServerWithoutTargets) { | |||
| 492 | 495 | ||
| 493 | 496 | TEST_F(InspectorSocketServerTest, ServerCannotStart) { | |
| 494 | 497 | ServerDelegateNoTargets delegate1, delegate2; | |
| 495 | - ServerHolder server1(&delegate1, PORT); | ||
| 498 | + ServerHolder server1(&delegate1, 0); | ||
| 496 | 499 | ASSERT_TRUE(server1->Start(&loop)); | |
| 497 | - ServerHolder server2(&delegate2, PORT); | ||
| 500 | + ServerHolder server2(&delegate2, server1.port()); | ||
| 498 | 501 | ASSERT_FALSE(server2->Start(&loop)); | |
| 499 | 502 | server1->Stop(ServerHolder::CloseCallback); | |
| 500 | 503 | server1->TerminateConnections(ServerHolder::ConnectionsTerminated); | |
@@ -506,10 +509,10 @@ TEST_F(InspectorSocketServerTest, ServerCannotStart) { | |||
| 506 | 509 | ||
| 507 | 510 | TEST_F(InspectorSocketServerTest, StoppingServerDoesNotKillConnections) { | |
| 508 | 511 | ServerDelegateNoTargets delegate; | |
| 509 | - ServerHolder server(&delegate, PORT); | ||
| 512 | + ServerHolder server(&delegate, 0); | ||
| 510 | 513 | ASSERT_TRUE(server->Start(&loop)); | |
| 511 | 514 | SocketWrapper socket1(&loop); | |
| 512 | - socket1.Connect("0.0.0.0", PORT); | ||
| 515 | + socket1.Connect("0.0.0.0", server.port()); | ||
| 513 | 516 | socket1.TestHttpRequest("/json/list", "[ ]"); | |
| 514 | 517 | server->Stop(ServerHolder::CloseCallback); | |
| 515 | 518 | SPIN_WHILE(!server.closed); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments