diff --git a/benchmark/http_simple.js b/benchmark/http_simple.js index 75295affb2..1d758b0328 100644 --- a/benchmark/http_simple.js +++ b/benchmark/http_simple.js @@ -47,7 +47,7 @@ http.createServer(function (req, res) { var content_length = body.length.toString(); - res.sendHeader( status + res.writeHeader( status , { "Content-Type": "text/plain" , "Content-Length": content_length } diff --git a/benchmark/static_http_server.js b/benchmark/static_http_server.js index 3e04ae59e7..5bc48120f6 100644 --- a/benchmark/static_http_server.js +++ b/benchmark/static_http_server.js @@ -16,7 +16,7 @@ for (var i = 0; i < bytes; i++) { } var server = http.createServer(function (req, res) { - res.sendHeader(200, { + res.writeHeader(200, { "Content-Type": "text/plain", "Content-Length": body.length }); diff --git a/doc/api.txt b/doc/api.txt index 484374c33c..6c5633b518 100644 --- a/doc/api.txt +++ b/doc/api.txt @@ -19,7 +19,7 @@ World": var sys = require("sys"), http = require("http"); http.createServer(function (request, response) { - response.sendHeader(200, {"Content-Type": "text/plain"}); + response.writeHeader(200, {"Content-Type": "text/plain"}); response.write("Hello World\n"); response.close(); }).listen(8000); @@ -916,16 +916,18 @@ The +http.Connection+ object. This object is created internally by a HTTP server--not by the user. It is passed as the second parameter to the +"request"+ event. -+response.sendHeader(statusCode, headers)+ :: ++response.writeHeader(statusCode[, reasonPhrase] , headers)+ :: Sends a response header to the request. The status code is a 3-digit HTTP -status code, like +404+. The second argument, +headers+, are the response headers. +status code, like +404+. The last argument, +headers+, are the response headers. +Optionally one can give a human-readable +reasonPhrase+ as the second +argument. + Example: + ---------------------------------------- var body = "hello world"; -response.sendHeader(200, { +response.writeHeader(200, { "Content-Length": body.length, "Content-Type": "text/plain" }); @@ -936,7 +938,7 @@ be called before +response.close()+ is called. +response.write(chunk, encoding="ascii")+ :: -This method must be called after +sendHeader+ was +This method must be called after +writeHeader+ was called. It sends a chunk of the response body. This method may be called multiple times to provide successive parts of the body. + @@ -1260,7 +1262,7 @@ http.createServer(function (req, res) { fields = {}, name, filename; mp.addListener("error", function (er) { - res.sendHeader(400, {"content-type":"text/plain"}); + res.writeHeader(400, {"content-type":"text/plain"}); res.write("You sent a bad message!\n"+er.message); res.close(); }); @@ -1280,7 +1282,7 @@ http.createServer(function (req, res) { }); mp.addListener("complete", function () { var response = "You posted: \n" + sys.inspect(fields); - res.sendHeader(200, { + res.writeHeader(200, { "content-type" : "text/plain", "content-length" : response.length }); diff --git a/doc/index.html b/doc/index.html index 518cce9d0b..2566cd1788 100644 --- a/doc/index.html +++ b/doc/index.html @@ -48,7 +48,7 @@ var sys = require('sys'), http = require('http'); http.createServer(function (req, res) { setTimeout(function () { - res.sendHeader(200, {'Content-Type': 'text/plain'}); + res.writeHeader(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }, 2000); diff --git a/lib/http.js b/lib/http.js index 52bbf350cb..6278b7175e 100644 --- a/lib/http.js +++ b/lib/http.js @@ -256,12 +256,31 @@ function ServerResponse (req) { sys.inherits(ServerResponse, OutgoingMessage); exports.ServerResponse = ServerResponse; -ServerResponse.prototype.sendHeader = function (statusCode, headers) { - var reason = STATUS_CODES[statusCode] || "unknown"; - var status_line = "HTTP/1.1 " + statusCode.toString() + " " + reason + CRLF; + +ServerResponse.prototype.writeHeader = function (statusCode) { + var reasonPhrase, headers, headerIndex; + + if (typeof arguments[1] == 'string') { + reasonPhrase = arguments[1]; + headerIndex = 2; + } else { + reasonPhrase = STATUS_CODES[statusCode] || "unknown"; + headerIndex = 1; + } + + if (typeof arguments[headerIndex] == 'object') { + headers = arguments[headerIndex]; + } else { + headers = {}; + } + + var status_line = "HTTP/1.1 " + statusCode.toString() + " " + + reasonPhrase + CRLF; this.sendHeaderLines(status_line, headers); }; +// TODO eventually remove sendHeader() +ServerResponse.prototype.sendHeader = ServerResponse.prototype.writeHeader; function ClientRequest (method, url, headers) { OutgoingMessage.call(this); diff --git a/test/mjsunit/test-byte-length.js b/test/mjsunit/test-byte-length.js index 7cca37f969..246a33dcda 100644 --- a/test/mjsunit/test-byte-length.js +++ b/test/mjsunit/test-byte-length.js @@ -12,4 +12,4 @@ assert.throws(function() { }); assert.throws(function() { process._byteLength(5); -}); \ No newline at end of file +}); diff --git a/test/mjsunit/test-http-1.0.js b/test/mjsunit/test-http-1.0.js index ba845e8b3c..911cb1ca0d 100644 --- a/test/mjsunit/test-http-1.0.js +++ b/test/mjsunit/test-http-1.0.js @@ -9,7 +9,7 @@ var server_response = ""; var client_got_eof = false; var server = http.createServer(function (req, res) { - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write(body); res.close(); }) diff --git a/test/mjsunit/test-http-cat.js b/test/mjsunit/test-http-cat.js index eb7cd9e403..bda98c15b9 100644 --- a/test/mjsunit/test-http-cat.js +++ b/test/mjsunit/test-http-cat.js @@ -5,7 +5,7 @@ PORT = 8888; var body = "exports.A = function() { return 'A';}"; var server = http.createServer(function (req, res) { puts("got request"); - res.sendHeader(200, [ + res.writeHeader(200, [ ["Content-Length", body.length], ["Content-Type", "text/plain"] ]); diff --git a/test/mjsunit/test-http-chunked.js b/test/mjsunit/test-http-chunked.js index 4a2dac37d3..d94b8a253e 100644 --- a/test/mjsunit/test-http-chunked.js +++ b/test/mjsunit/test-http-chunked.js @@ -5,7 +5,7 @@ var PORT = 8888; var UTF8_STRING = "Il était tué"; var server = http.createServer(function(req, res) { - res.sendHeader(200, {"Content-Type": "text/plain; charset=utf8"}); + res.writeHeader(200, {"Content-Type": "text/plain; charset=utf8"}); res.write(UTF8_STRING, 'utf8'); res.close(); }); diff --git a/test/mjsunit/test-http-client-race.js b/test/mjsunit/test-http-client-race.js index b055331b2e..b1f1237c21 100644 --- a/test/mjsunit/test-http-client-race.js +++ b/test/mjsunit/test-http-client-race.js @@ -8,7 +8,7 @@ var body2_s = "22222"; var server = http.createServer(function (req, res) { var body = url.parse(req.url).pathname === "/1" ? body1_s : body2_s; - res.sendHeader(200, { "Content-Type": "text/plain" + res.writeHeader(200, { "Content-Type": "text/plain" , "Content-Length": body.length }); res.write(body); diff --git a/test/mjsunit/test-http-client-upload.js b/test/mjsunit/test-http-client-upload.js index 317457c500..dbe36e1863 100644 --- a/test/mjsunit/test-http-client-upload.js +++ b/test/mjsunit/test-http-client-upload.js @@ -18,7 +18,7 @@ var server = http.createServer(function(req, res) { req.addListener('end', function () { server_req_complete = true; puts("request complete from server"); - res.sendHeader(200, {'Content-Type': 'text/plain'}); + res.writeHeader(200, {'Content-Type': 'text/plain'}); res.write('hello\n'); res.close(); }); diff --git a/test/mjsunit/test-http-malformed-request.js b/test/mjsunit/test-http-malformed-request.js index 123cfe7f32..5397e9f5ed 100644 --- a/test/mjsunit/test-http-malformed-request.js +++ b/test/mjsunit/test-http-malformed-request.js @@ -13,7 +13,7 @@ nrequests_expected = 1; var s = http.createServer(function (req, res) { puts("req: " + JSON.stringify(url.parse(req.url))); - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write("Hello World"); res.close(); diff --git a/test/mjsunit/test-http-proxy.js b/test/mjsunit/test-http-proxy.js index cfc33d60a5..d11d2dd6aa 100644 --- a/test/mjsunit/test-http-proxy.js +++ b/test/mjsunit/test-http-proxy.js @@ -7,7 +7,7 @@ var BACKEND_PORT = 8870; var backend = http.createServer(function (req, res) { // debug("backend"); - res.sendHeader(200, {"content-type": "text/plain"}); + res.writeHeader(200, {"content-type": "text/plain"}); res.write("hello world\n"); res.close(); }); @@ -19,7 +19,7 @@ var proxy = http.createServer(function (req, res) { debug("proxy req headers: " + JSON.stringify(req.headers)); var proxy_req = proxy_client.request(url.parse(req.url).pathname); proxy_req.addListener('response', function(proxy_res) { - res.sendHeader(proxy_res.statusCode, proxy_res.headers); + res.writeHeader(proxy_res.statusCode, proxy_res.headers); proxy_res.addListener("data", function(chunk) { res.write(chunk); }); diff --git a/test/mjsunit/test-http-server.js b/test/mjsunit/test-http-server.js index 9caaec0ad6..fe569ce42d 100644 --- a/test/mjsunit/test-http-server.js +++ b/test/mjsunit/test-http-server.js @@ -38,7 +38,7 @@ http.createServer(function (req, res) { } setTimeout(function () { - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write(url.parse(req.url).pathname); res.close(); }, 1); diff --git a/test/mjsunit/test-http-tls.js b/test/mjsunit/test-http-tls.js index da4ae18543..ffe042c1f4 100644 --- a/test/mjsunit/test-http-tls.js +++ b/test/mjsunit/test-http-tls.js @@ -52,7 +52,7 @@ var http_server=http.createServer(function (req, res) { } req.addListener('end', function () { - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write("The path was " + url.parse(req.url).pathname); res.close(); responses_sent += 1; diff --git a/test/mjsunit/test-http-wget.js b/test/mjsunit/test-http-wget.js index 947c3dff29..931fe44ddb 100644 --- a/test/mjsunit/test-http-wget.js +++ b/test/mjsunit/test-http-wget.js @@ -24,7 +24,7 @@ var client_got_eof = false; var connection_was_closed = false; var server = http.createServer(function (req, res) { - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write("hello "); res.write("world\n"); res.close(); diff --git a/test/mjsunit/test-http.js b/test/mjsunit/test-http.js index a248e1afc9..83daac910a 100644 --- a/test/mjsunit/test-http.js +++ b/test/mjsunit/test-http.js @@ -28,7 +28,7 @@ http.createServer(function (req, res) { } req.addListener('end', function () { - res.sendHeader(200, {"Content-Type": "text/plain"}); + res.writeHeader(200, {"Content-Type": "text/plain"}); res.write("The path was " + url.parse(req.url).pathname); res.close(); responses_sent += 1; diff --git a/test/mjsunit/test-keep-alive.js b/test/mjsunit/test-keep-alive.js index af1a1c68f2..f4d2933bb3 100644 --- a/test/mjsunit/test-keep-alive.js +++ b/test/mjsunit/test-keep-alive.js @@ -6,7 +6,7 @@ PORT = 8891; body = "hello world\n"; server = http.createServer(function (req, res) { - res.sendHeader(200, { + res.writeHeader(200, { "Content-Length": body.length, "Content-Type": "text/plain", }); diff --git a/test/mjsunit/test-multipart.js b/test/mjsunit/test-multipart.js index 2b441ebbc9..ba10b60d47 100644 --- a/test/mjsunit/test-multipart.js +++ b/test/mjsunit/test-multipart.js @@ -77,12 +77,12 @@ var server = http.createServer(function (req, res) { } mp.addListener("error", function (er) { sys.puts("!! error occurred"); - res.sendHeader(400, {}); + res.writeHeader(400, {}); res.write("bad"); res.close(); }); mp.addListener("complete", function () { - res.sendHeader(200, {}); + res.writeHeader(200, {}); res.write("ok"); res.close(); }); diff --git a/test/mjsunit/test-remote-module-loading.js b/test/mjsunit/test-remote-module-loading.js index e49eed70a0..98179086a4 100644 --- a/test/mjsunit/test-remote-module-loading.js +++ b/test/mjsunit/test-remote-module-loading.js @@ -11,7 +11,7 @@ var server = http.createServer(function(req, res) { 'return '+JSON.stringify(url.parse(req.url).pathname)+';'+ '};'; - res.sendHeader(200, {'Content-Type': 'text/javascript'}); + res.writeHeader(200, {'Content-Type': 'text/javascript'}); res.write(body); res.close(); }); diff --git a/test/mjsunit/test-sync-fileread.js b/test/mjsunit/test-sync-fileread.js index bc80eec690..8c337ee0a9 100644 --- a/test/mjsunit/test-sync-fileread.js +++ b/test/mjsunit/test-sync-fileread.js @@ -2,4 +2,4 @@ process.mixin(require('./common')); var fixture = path.join(__dirname, "fixtures/x.txt"); -assert.equal("xyz\n", fs.readFileSync(fixture)); \ No newline at end of file +assert.equal("xyz\n", fs.readFileSync(fixture));