Send connect message if client is connected.
authorCheng Zhao <zcbenz@gmail.com>
Fri, 5 Sep 2014 02:52:47 +0000 (10:52 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Fri, 5 Sep 2014 02:52:47 +0000 (10:52 +0800)
atom/browser/node_debugger.cc
atom/browser/node_debugger.h

index 68ab20b..55cc3e6 100644 (file)
@@ -24,6 +24,8 @@ namespace {
 // taken by gin, blink and node, using 2 is a safe option for now.
 const int kIsolateSlot = 2;
 
+const char* kContentLength = "Content-Length";
+
 }  // namespace
 
 NodeDebugger::NodeDebugger(v8::Isolate* isolate)
@@ -105,13 +107,23 @@ void NodeDebugger::OnMessage(const std::string& message) {
 
 void NodeDebugger::SendMessage(const std::string& message) {
   if (accepted_socket_) {
-    std::string header = base::StringPrintf("Content-Length: %d\r\n\r\n",
-                                            static_cast<int>(message.size()));
+    std::string header = base::StringPrintf(
+        "%s: %d\r\n\r\n", kContentLength, static_cast<int>(message.size()));
     accepted_socket_->Send(header);
     accepted_socket_->Send(message);
   }
 }
 
+void NodeDebugger::SendConnectMessage() {
+  accepted_socket_->Send(base::StringPrintf(
+      "Type: connect\r\n"
+      "V8-Version: %s\r\n"
+      "Protocol-Version: 1\r\n"
+      "Embedding-Host: %s\r\n"
+      "%s: 0\r\n",
+      v8::V8::GetVersion(), "Atom-Shell", kContentLength), true);
+}
+
 // static
 void NodeDebugger::DebugMessageHandler(const v8::Debug::Message& message) {
   NodeDebugger* self = static_cast<NodeDebugger*>(
@@ -132,6 +144,7 @@ void NodeDebugger::DidAccept(net::StreamListenSocket* server,
   }
 
   accepted_socket_ = socket.Pass();
+  SendConnectMessage();
 }
 
 void NodeDebugger::DidRead(net::StreamListenSocket* socket,
index bc2c392..39273fa 100644 (file)
@@ -28,6 +28,7 @@ class NodeDebugger : public net::StreamListenSocket::Delegate {
   void CloseSession();
   void OnMessage(const std::string& message);
   void SendMessage(const std::string& message);
+  void SendConnectMessage();
 
   static void DebugMessageHandler(const v8::Debug::Message& message);