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()