505 : 'HTTP Version not supported'
};
-var connection_expression = /Connection/i;
-var transfer_encoding_expression = /Transfer-Encoding/i;
-var close_expression = /close/i;
-var chunk_expression = /chunk/i;
-var content_length_expression = /Content-Length/i;
+var connectionExpression = /Connection/i;
+var transferEncodingExpression = /Transfer-Encoding/i;
+var closeExpression = /close/i;
+var chunkExpression = /chunk/i;
+var contentLengthExpression = /Content-Length/i;
/* Abstract base class for ServerRequest and ClientResponse. */
this.outputEncodings = [];
this.closeOnFinish = false;
- this.chunked_encoding = false;
- this.should_keep_alive = true;
- this.use_chunked_encoding_by_default = true;
+ this.chunkedEncoding = false;
+ this.shouldKeepAlive = true;
+ this.useChunkedEncodingByDefault = true;
this.flushing = false;
this.headWritten = false;
this.outputEncodings.push(encoding);
};
-OutgoingMessage.prototype.sendHeaderLines = function (first_line, headers) {
- var sent_connection_header = false;
- var sent_content_length_header = false;
- var sent_transfer_encoding_header = false;
+OutgoingMessage.prototype.sendHeaderLines = function (firstLine, headers) {
+ var sentConnectionHeader = false;
+ var sentContentLengthHeader = false;
+ var sentTransferEncodingHeader = false;
- // first_line in the case of request is: "GET /index.html HTTP/1.1\r\n"
+ // firstLine in the case of request is: "GET /index.html HTTP/1.1\r\n"
// in the case of response it is: "HTTP/1.1 200 OK\r\n"
- var message_header = first_line;
+ var messageHeader = firstLine;
var field, value;
for (var i in headers) {
if (headers[i] instanceof Array) {
value = headers[i];
}
- message_header += field + ": " + value + CRLF;
+ messageHeader += field + ": " + value + CRLF;
- if (connection_expression.test(field)) {
- sent_connection_header = true;
- if (close_expression.test(value)) this.closeOnFinish = true;
+ if (connectionExpression.test(field)) {
+ sentConnectionHeader = true;
+ if (closeExpression.test(value)) this.closeOnFinish = true;
- } else if (transfer_encoding_expression.test(field)) {
- sent_transfer_encoding_header = true;
- if (chunk_expression.test(value)) this.chunked_encoding = true;
+ } else if (transferEncodingExpression.test(field)) {
+ sentTransferEncodingHeader = true;
+ if (chunkExpression.test(value)) this.chunkedEncoding = true;
- } else if (content_length_expression.test(field)) {
- sent_content_length_header = true;
+ } else if (contentLengthExpression.test(field)) {
+ sentContentLengthHeader = true;
}
}
// keep-alive logic
- if (sent_connection_header == false) {
- if (this.should_keep_alive &&
- (sent_content_length_header || this.use_chunked_encoding_by_default)) {
- message_header += "Connection: keep-alive\r\n";
+ if (sentConnectionHeader == false) {
+ if (this.shouldKeepAlive &&
+ (sentContentLengthHeader || this.useChunkedEncodingByDefault)) {
+ messageHeader += "Connection: keep-alive\r\n";
} else {
this.closeOnFinish = true;
- message_header += "Connection: close\r\n";
+ messageHeader += "Connection: close\r\n";
}
}
- if (sent_content_length_header == false && sent_transfer_encoding_header == false) {
- if (this.use_chunked_encoding_by_default) {
- message_header += "Transfer-Encoding: chunked\r\n";
- this.chunked_encoding = true;
+ if (sentContentLengthHeader == false && sentTransferEncodingHeader == false) {
+ if (this.useChunkedEncodingByDefault) {
+ messageHeader += "Transfer-Encoding: chunked\r\n";
+ this.chunkedEncoding = true;
}
else {
this.closeOnFinish = true;
}
}
- message_header += CRLF;
+ messageHeader += CRLF;
- this._send(message_header);
+ this._send(messageHeader);
// wait until the first body chunk, or close(), is sent to flush.
};
OutgoingMessage.prototype.sendBody = function () {
- throw new Error("sendBody() has been renamed to write(). " +
+ throw new Error("sendBody() has been renamed to write(). " +
"The 'body' event has been renamed to 'data' and " +
"the 'complete' event has been renamed to 'end'.");
};
}
encoding = encoding || "ascii";
- if (this.chunked_encoding) {
+ if (this.chunkedEncoding) {
if (typeof chunk == 'string') {
this._send(process._byteLength(chunk, encoding).toString(16));
} else {
};
OutgoingMessage.prototype.close = function () {
- if (this.chunked_encoding) this._send("0\r\n\r\n"); // last chunk
+ if (this.chunkedEncoding) this._send("0\r\n\r\n"); // last chunk
this.finished = true;
this.flush();
};
OutgoingMessage.call(this, req.socket);
if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {
- this.use_chunked_encoding_by_default = false;
- this.should_keep_alive = false;
+ this.useChunkedEncodingByDefault = false;
+ this.shouldKeepAlive = false;
}
}
sys.inherits(ServerResponse, OutgoingMessage);
headers = {};
}
- var status_line = "HTTP/1.1 " + statusCode.toString() + " "
+ var statusLine = "HTTP/1.1 " + statusCode.toString() + " "
+ reasonPhrase + CRLF;
- this.sendHeaderLines(status_line, headers);
+ this.sendHeaderLines(statusLine, headers);
this.headWritten = true;
};
function ClientRequest (socket, method, url, headers) {
OutgoingMessage.call(this, socket);
- this.should_keep_alive = false;
+ this.shouldKeepAlive = false;
if (method === "GET" || method === "HEAD") {
- this.use_chunked_encoding_by_default = false;
+ this.useChunkedEncodingByDefault = false;
} else {
- this.use_chunked_encoding_by_default = true;
+ this.useChunkedEncodingByDefault = true;
}
this.closeOnFinish = true;
// The following callback is issued after the headers have been read on a
// new message. In this callback we setup the response object and pass it
// to the user.
- parser.onIncoming = function (incoming, shouldKeepAlive) {
- var req = incoming;
+ parser.onIncoming = function (req, shouldKeepAlive) {
var res = new ServerResponse(req);
- res.should_keep_alive = shouldKeepAlive;
+ res.shouldKeepAlive = shouldKeepAlive;
res.addListener('flush', function () {
if (flushMessageQueue(socket, responses)) {
socket.close();
self.close();
});
- self.addListener("close", function (had_error) {
- if (had_error) {
- self.emit("error");
+ self.addListener("close", function (e) {
+ if (e) {
+ self.emit("error", e);
return;
}