Skip to content

Commit

Permalink
inspector: print all listening addresses
Browse files Browse the repository at this point in the history
Some hostnames have multiple interfaces. Before this commit, the
inspector only printed the first one. Now, it prints them all.

No test. I can't think of a reliable way to test this on the CI matrix.

PR-URL: nodejs#26008
Fixes: nodejs#13772
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
bnoordhuis authored and BridgeAR committed Mar 4, 2019
1 parent 000788e commit df67cd0
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 20 deletions.
40 changes: 21 additions & 19 deletions src/inspector_socket_server.cc
Original file line number Diff line number Diff line change
Expand Up @@ -93,22 +93,6 @@ const char* MatchPathSegment(const char* path, const char* expected) {
return nullptr;
}

void PrintDebuggerReadyMessage(const std::string& host,
int port,
const std::vector<std::string>& ids,
FILE* out) {
if (out == nullptr) {
return;
}
for (const std::string& id : ids) {
fprintf(out, "Debugger listening on %s\n",
FormatWsAddress(host, port, id, true).c_str());
}
fprintf(out, "For help, see: %s\n",
"https://nodejs.org/en/docs/inspector");
fflush(out);
}

void SendHttpResponse(InspectorSocket* socket, const std::string& response) {
const char HEADERS[] = "HTTP/1.0 200 OK\r\n"
"Content-Type: application/json; charset=UTF-8\r\n"
Expand Down Expand Up @@ -235,6 +219,25 @@ class ServerSocket {
int port_ = -1;
};

void PrintDebuggerReadyMessage(
const std::string& host,
const std::vector<InspectorSocketServer::ServerSocketPtr>& server_sockets,
const std::vector<std::string>& ids,
FILE* out) {
if (out == nullptr) {
return;
}
for (const auto& server_socket : server_sockets) {
for (const std::string& id : ids) {
fprintf(out, "Debugger listening on %s\n",
FormatWsAddress(host, server_socket->port(), id, true).c_str());
}
}
fprintf(out, "For help, see: %s\n",
"https://nodejs.org/en/docs/inspector");
fflush(out);
}

InspectorSocketServer::InspectorSocketServer(
std::unique_ptr<SocketServerDelegate> delegate, uv_loop_t* loop,
const std::string& host, int port, FILE* out)
Expand Down Expand Up @@ -276,7 +279,7 @@ void InspectorSocketServer::SessionTerminated(int session_id) {
if (connected_sessions_.empty()) {
if (was_attached && state_ == ServerState::kRunning
&& !server_sockets_.empty()) {
PrintDebuggerReadyMessage(host_, server_sockets_[0]->port(),
PrintDebuggerReadyMessage(host_, server_sockets_,
delegate_->GetTargetIds(), out_);
}
if (state_ == ServerState::kStopped) {
Expand Down Expand Up @@ -393,8 +396,7 @@ bool InspectorSocketServer::Start() {
}
delegate_.swap(delegate_holder);
state_ = ServerState::kRunning;
// getaddrinfo sorts the addresses, so the first port is most relevant.
PrintDebuggerReadyMessage(host_, server_sockets_[0]->port(),
PrintDebuggerReadyMessage(host_, server_sockets_,
delegate_->GetTargetIds(), out_);
return true;
}
Expand Down
2 changes: 1 addition & 1 deletion src/inspector_socket_server.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@ class InspectorSocketServer {
return server_sockets_.empty() && connected_sessions_.empty();
}

private:
static void CloseServerSocket(ServerSocket*);
using ServerSocketPtr = DeleteFnPtr<ServerSocket, CloseServerSocket>;

private:
void SendListResponse(InspectorSocket* socket, const std::string& host,
SocketSession* session);
std::string GetFrontendURL(bool is_compat,
Expand Down

0 comments on commit df67cd0

Please sign in to comment.