diff --git a/lib/http.js b/lib/http.js index ca196bc1767..6b7d1f691cd 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()