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 (!hot) {
|
||||||
if (this.chunkedEncoding) {
|
if (this.chunkedEncoding) {
|
||||||
ret = this._send('0\r\n' + this._trailer + '\r\n'); // Last chunk.
|
ret = this._send('0\r\n' + this._trailer + '\r\n'); // Last chunk.
|
||||||
} else if (!data) {
|
} else {
|
||||||
// Force a flush, HACK.
|
// Force a flush, HACK.
|
||||||
ret = this._send('');
|
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