mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
Buggy connections could crash node.js. Now check connection before sending data every time
http://groups.google.com/group/nodejs/browse_thread/thread/16abfa87c32408f3 We have our node.js server monitored by monit, however it seems monit is pretty agressive / quick about closing its connection and thus we've gotten into a loop of errors like this: at #<a ServerResponse>.flush at #<a ServerResponse>.sendBody at [object Object].json at [object Object].[anonymous] at [object Object].[anonymous] at [object Object].[anonymous] http.js:353: Socket is not open for writing connection.send(out, out.encoding); ^ Below is a patch that basically cause flushMessageQueue to check the connection state for each item in the queue rather than just a single time in the beginning.
This commit is contained in:
committed by
Ryan
parent
ed3602dddc
commit
8489bdbaeb
@@ -341,14 +341,13 @@ function createIncomingMessageStream (connection, incoming_listener) {
|
||||
/* Returns true if the message queue is finished and the connection
|
||||
* should be closed. */
|
||||
function flushMessageQueue (connection, queue) {
|
||||
if (connection.readyState !== "open" && connection.readyState !== "writeOnly") {
|
||||
return false;
|
||||
}
|
||||
|
||||
while (queue[0]) {
|
||||
var message = queue[0];
|
||||
|
||||
while (message.output.length > 0) {
|
||||
if (connection.readyState !== "open" && connection.readyState !== "writeOnly") {
|
||||
return false;
|
||||
}
|
||||
var out = message.output.shift();
|
||||
connection.send(out, out.encoding);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user