v8: debug: fix error handling in SendConnectMessage()

The old error handling code checked if the return value of Socket::Send() != 0,
which is wrong because Socket::Send() can write less bytes than requested or
return -1 on error.
This commit is contained in:
Ben Noordhuis 2012-04-24 03:41:49 +02:00 committed by isaacs
parent c08357c32f
commit 26f754d9dd

View File

@ -323,41 +323,41 @@ bool DebuggerAgentUtil::SendConnectMessage(const Socket* conn,
const char* embedding_host) { const char* embedding_host) {
static const int kBufferSize = 80; static const int kBufferSize = 80;
char buffer[kBufferSize]; // Sending buffer. char buffer[kBufferSize]; // Sending buffer.
bool ok;
int len; int len;
int r;
// Send the header. // Send the header.
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), len = OS::SNPrintF(Vector<char>(buffer, kBufferSize),
"Type: connect\r\n"); "Type: connect\r\n");
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), len = OS::SNPrintF(Vector<char>(buffer, kBufferSize),
"V8-Version: %s\r\n", v8::V8::GetVersion()); "V8-Version: %s\r\n", v8::V8::GetVersion());
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), len = OS::SNPrintF(Vector<char>(buffer, kBufferSize),
"Protocol-Version: 1\r\n"); "Protocol-Version: 1\r\n");
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
if (embedding_host != NULL) { if (embedding_host != NULL) {
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), len = OS::SNPrintF(Vector<char>(buffer, kBufferSize),
"Embedding-Host: %s\r\n", embedding_host); "Embedding-Host: %s\r\n", embedding_host);
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
} }
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), len = OS::SNPrintF(Vector<char>(buffer, kBufferSize),
"%s: 0\r\n", kContentLength); "%s: 0\r\n", kContentLength);
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
// Terminate header with empty line. // Terminate header with empty line.
len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), "\r\n"); len = OS::SNPrintF(Vector<char>(buffer, kBufferSize), "\r\n");
ok = conn->Send(buffer, len); r = conn->Send(buffer, len);
if (!ok) return false; if (r != len) return false;
// No body for connect message. // No body for connect message.