Browse Source

Patches floating on V8

v0.9.1-release
isaacs 13 years ago
parent
commit
2cca7488bf
  1. 3
      deps/v8/build/common.gypi
  2. 26
      deps/v8/src/debug-agent.cc
  3. 36
      deps/v8/src/platform-posix.cc

3
deps/v8/build/common.gypi

@ -339,7 +339,7 @@
'cflags': [ '-I/usr/pkg/include' ], 'cflags': [ '-I/usr/pkg/include' ],
}], }],
['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', { ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter', 'cflags': [ '-Wno-unused-parameter',
'-Wnon-virtual-dtor', '-Woverloaded-virtual' ], '-Wnon-virtual-dtor', '-Woverloaded-virtual' ],
}], }],
], ],
@ -386,7 +386,6 @@
}], # OS=="mac" }], # OS=="mac"
['OS=="win"', { ['OS=="win"', {
'msvs_configuration_attributes': { 'msvs_configuration_attributes': {
'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
'CharacterSet': '1', 'CharacterSet': '1',
}, },

26
deps/v8/src/debug-agent.cc

@ -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.

36
deps/v8/src/platform-posix.cc

@ -421,7 +421,11 @@ Socket* POSIXSocket::Accept() const {
return NULL; return NULL;
} }
int socket = accept(socket_, NULL, NULL); int socket;
do
socket = accept(socket_, NULL, NULL);
while (socket == -1 && errno == EINTR);
if (socket == -1) { if (socket == -1) {
return NULL; return NULL;
} else { } else {
@ -448,7 +452,10 @@ bool POSIXSocket::Connect(const char* host, const char* port) {
} }
// Connect. // Connect.
status = connect(socket_, result->ai_addr, result->ai_addrlen); do
status = connect(socket_, result->ai_addr, result->ai_addrlen);
while (status == -1 && errno == EINTR);
freeaddrinfo(result); freeaddrinfo(result);
return status == 0; return status == 0;
} }
@ -467,13 +474,32 @@ bool POSIXSocket::Shutdown() {
int POSIXSocket::Send(const char* data, int len) const { int POSIXSocket::Send(const char* data, int len) const {
int status = send(socket_, data, len, 0); int written;
return status;
for (written = 0; written < len; /* empty */) {
int status = send(socket_, data + written, len - written, 0);
if (status == 0) {
break;
} else if (status > 0) {
written += status;
} else if (errno == EINTR) {
/* interrupted by signal, retry */
} else {
return -1;
}
}
return written;
} }
int POSIXSocket::Receive(char* data, int len) const { int POSIXSocket::Receive(char* data, int len) const {
int status = recv(socket_, data, len, 0); int status;
do
status = recv(socket_, data, len, 0);
while (status == -1 && errno == EINTR);
return status; return status;
} }

Loading…
Cancel
Save