summaryrefslogtreecommitdiff
path: root/src/inspector_socket_server.cc
diff options
context:
space:
mode:
authorEugene Ostroukhov <eostroukhov@chromium.org>2017-01-18 10:18:32 -0800
committerEugene Ostroukhov <eostroukhov@chromium.org>2017-01-20 09:10:37 -0800
commitba776b3a56642d4cade5fa26c27c654bb6dde759 (patch)
tree981d4052dc2d94f4682a8e65587b498e61519b15 /src/inspector_socket_server.cc
parent974ecb05988da472d9f8cb58bf5e9d725539daeb (diff)
downloadandroid-node-v8-ba776b3a56642d4cade5fa26c27c654bb6dde759.tar.gz
android-node-v8-ba776b3a56642d4cade5fa26c27c654bb6dde759.tar.bz2
android-node-v8-ba776b3a56642d4cade5fa26c27c654bb6dde759.zip
inspector: no crash when WS server can't start
This change also changes error message to make it consistent with the one printed by the debugger. Fixes: https://github.com/nodejs/node/issues/10858 PR-URL: https://github.com/nodejs/node/pull/10878 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'src/inspector_socket_server.cc')
-rw-r--r--src/inspector_socket_server.cc24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/inspector_socket_server.cc b/src/inspector_socket_server.cc
index 5308e9bcf0..ee44a69a68 100644
--- a/src/inspector_socket_server.cc
+++ b/src/inspector_socket_server.cc
@@ -24,9 +24,9 @@ void Escape(std::string* string) {
}
}
-std::string GetWsUrl(int port, const std::string& id) {
+std::string GetWsUrl(const std::string& host, int port, const std::string& id) {
char buf[1024];
- snprintf(buf, sizeof(buf), "127.0.0.1:%d/%s", port, id.c_str());
+ snprintf(buf, sizeof(buf), "%s:%d/%s", host.c_str(), port, id.c_str());
return buf;
}
@@ -74,7 +74,8 @@ void OnBufferAlloc(uv_handle_t* handle, size_t len, uv_buf_t* buf) {
buf->len = len;
}
-void PrintDebuggerReadyMessage(int port,
+void PrintDebuggerReadyMessage(const std::string& host,
+ int port,
const std::vector<std::string>& ids,
FILE* out) {
if (out == NULL) {
@@ -92,7 +93,8 @@ void PrintDebuggerReadyMessage(int port,
for (const std::string& id : ids) {
fprintf(out,
" chrome-devtools://devtools/bundled/inspector.html?"
- "experiments=true&v8only=true&ws=%s\n", GetWsUrl(port, id).c_str());
+ "experiments=true&v8only=true&ws=%s\n",
+ GetWsUrl(host, port, id).c_str());
}
fflush(out);
}
@@ -229,9 +231,11 @@ class SocketSession {
};
InspectorSocketServer::InspectorSocketServer(SocketServerDelegate* delegate,
+ const std::string& host,
int port,
FILE* out) : loop_(nullptr),
delegate_(delegate),
+ host_(host),
port_(port),
server_(uv_tcp_t()),
closer_(nullptr),
@@ -284,7 +288,7 @@ void InspectorSocketServer::SessionTerminated(int session_id) {
delegate_->EndSession(session_id);
if (connected_sessions_.empty() &&
uv_is_active(reinterpret_cast<uv_handle_t*>(&server_))) {
- PrintDebuggerReadyMessage(port_, delegate_->GetTargetIds(), out_);
+ PrintDebuggerReadyMessage(host_, port_, delegate_->GetTargetIds(), out_);
}
}
@@ -337,7 +341,7 @@ void InspectorSocketServer::SendListResponse(InspectorSocket* socket) {
}
}
if (!connected) {
- std::string address = GetWsUrl(port_, id);
+ std::string address = GetWsUrl(host_, port_, id);
std::ostringstream frontend_url;
frontend_url << "chrome-devtools://devtools/bundled";
frontend_url << "/inspector.html?experiments=true&v8only=true&ws=";
@@ -353,7 +357,7 @@ bool InspectorSocketServer::Start(uv_loop_t* loop) {
loop_ = loop;
sockaddr_in addr;
uv_tcp_init(loop_, &server_);
- uv_ip4_addr("0.0.0.0", port_, &addr);
+ uv_ip4_addr(host_.c_str(), port_, &addr);
int err = uv_tcp_bind(&server_,
reinterpret_cast<const struct sockaddr*>(&addr), 0);
if (err == 0)
@@ -363,11 +367,13 @@ bool InspectorSocketServer::Start(uv_loop_t* loop) {
SocketConnectedCallback);
}
if (err == 0 && connected_sessions_.empty()) {
- PrintDebuggerReadyMessage(port_, delegate_->GetTargetIds(), out_);
+ PrintDebuggerReadyMessage(host_, port_, delegate_->GetTargetIds(), out_);
}
if (err != 0 && connected_sessions_.empty()) {
if (out_ != NULL) {
- fprintf(out_, "Unable to open devtools socket: %s\n", uv_strerror(err));
+ fprintf(out_, "Starting inspector on %s:%d failed: %s\n",
+ host_.c_str(), port_, uv_strerror(err));
+ fflush(out_);
}
uv_close(reinterpret_cast<uv_handle_t*>(&server_), nullptr);
return false;