Fix zero length buffer bug for http res.end()
Reported by Kadir Pekel <kadirpekel@gmail.com>
This commit is contained in:
parent
1b24fc6678
commit
265cda97d7
@ -560,7 +560,7 @@ OutgoingMessage.prototype.end = function (data, encoding) {
|
||||
if (!hot) {
|
||||
if (this.chunkedEncoding) {
|
||||
ret = this._send('0\r\n' + this._trailer + '\r\n'); // Last chunk.
|
||||
} else if (!data) {
|
||||
} else {
|
||||
// Force a flush, HACK.
|
||||
ret = this._send('');
|
||||
}
|
||||
|
41
test/simple/test-zerolengthbufferbug.js
Normal file
41
test/simple/test-zerolengthbufferbug.js
Normal file
@ -0,0 +1,41 @@
|
||||
// Serving up a zero-length buffer should work.
|
||||
|
||||
var common = require("../common");
|
||||
var assert = common.assert;
|
||||
var http = require('http');
|
||||
|
||||
var server = http.createServer(function (req, res) {
|
||||
var buffer = new Buffer(0);
|
||||
res.writeHead(200, {'Content-Type': 'text/html',
|
||||
'Content-Length': buffer.length});
|
||||
res.end(buffer);
|
||||
});
|
||||
|
||||
var gotResponse = false;
|
||||
var resBodySize = 0;
|
||||
|
||||
server.listen(common.PORT, function () {
|
||||
var client = http.createClient(common.PORT);
|
||||
|
||||
var req = client.request('GET', '/');
|
||||
req.end();
|
||||
|
||||
req.on('response', function (res) {
|
||||
gotResponse = true;
|
||||
|
||||
res.on('data', function (d) {
|
||||
resBodySize += d.length;
|
||||
});
|
||||
|
||||
res.on('end', function (d) {
|
||||
server.close();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
process.on('exit', function () {
|
||||
assert.ok(gotResponse);
|
||||
assert.equal(0, resBodySize);
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user