From 004faf384690aa67cfd377e6ebcfd1667d5f2489 Mon Sep 17 00:00:00 2001
From: Jed Schmidt
Date: Sun, 14 Mar 2010 12:36:45 +0900
Subject: [PATCH] Added check to make sure writeHead() is called before
write(), to prevent silent failure.
---
lib/http.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lib/http.js b/lib/http.js
index ca196bc176..6b7d1f691c 100644
--- a/lib/http.js
+++ b/lib/http.js
@@ -110,6 +110,7 @@ function OutgoingMessage (connection) {
this.use_chunked_encoding_by_default = true;
this.flushing = false;
+ this.headWritten = false;
this.finished = false;
}
@@ -215,6 +216,10 @@ OutgoingMessage.prototype.sendBody = function () {
OutgoingMessage.prototype.write = function (chunk, encoding) {
+ if ( (this instanceof ServerResponse) && !this.headWritten) {
+ throw new Error("writeHead() must be called before write()")
+ }
+
encoding = encoding || "ascii";
if (this.chunked_encoding) {
this._send(process._byteLength(chunk, encoding).toString(16));
@@ -279,6 +284,7 @@ ServerResponse.prototype.writeHead = function (statusCode) {
var status_line = "HTTP/1.1 " + statusCode.toString() + " "
+ reasonPhrase + CRLF;
this.sendHeaderLines(status_line, headers);
+ this.headWritten = true;
};
// TODO eventually remove sendHeader(), writeHeader()