Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Server responses should have a body if HEAD request
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Jun 2, 2010
1 parent ef9f404 commit 55a6f01
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,8 @@ OutgoingMessage.prototype.end = function (data, encoding) {
function ServerResponse (req) {
OutgoingMessage.call(this, req.socket);

if (req.method === 'HEAD') this._hasBody = false;

if (req.httpVersionMajor < 1 || req.httpVersionMinor < 1) {
this.useChunkedEncodingByDefault = false;
this.shouldKeepAlive = false;
Expand Down
31 changes: 31 additions & 0 deletions test/simple/test-http-head-response-has-no-body.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
require('../common');

var http = require('http');

// This test is to make sure that when the HTTP server
// responds to a HEAD request, it does not send any body.
// In this case it was sending '0\r\n\r\n'

var server = http.createServer(function(req, res) {
res.writeHead(200); // broken: defaults to TE chunked
res.end();
});
server.listen(PORT);

responseComplete = false;

var req = http.createClient(PORT).request('HEAD', '/')
error('req');
req.end();
req.addListener('response', function (res) {
error('response');
res.addListener('end', function() {
error('response end');
server.close();
responseComplete = true;
});
});

process.addListener('exit', function () {
assert.ok(responseComplete);
});

0 comments on commit 55a6f01

Please sign in to comment.