Avoided sending empty chunkedEncoding chunks in the middle of http responses
This commit is contained in:
parent
15ec99ec59
commit
895f89d62a
@ -392,14 +392,13 @@ OutgoingMessage.prototype.write = function (chunk, encoding) {
|
|||||||
|
|
||||||
encoding = encoding || "ascii";
|
encoding = encoding || "ascii";
|
||||||
if (this.chunkedEncoding) {
|
if (this.chunkedEncoding) {
|
||||||
if (typeof chunk == 'string') {
|
var chunkLength = (typeof chunk == 'string' ? process._byteLength(chunk, encoding) : chunk.length);
|
||||||
this._send(process._byteLength(chunk, encoding).toString(16));
|
if (chunkLength > 0) {
|
||||||
} else {
|
this._send(chunkLength.toString(16));
|
||||||
this._send(chunk.length.toString(16));
|
|
||||||
}
|
|
||||||
this._send(CRLF);
|
this._send(CRLF);
|
||||||
this._send(chunk, encoding);
|
this._send(chunk, encoding);
|
||||||
this._send(CRLF);
|
this._send(CRLF);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this._send(chunk, encoding);
|
this._send(chunk, encoding);
|
||||||
}
|
}
|
||||||
|
40
test/simple/test-http-write-empty-string.js
Normal file
40
test/simple/test-http-write-empty-string.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
PORT = 8000;
|
||||||
|
sys = require('sys');
|
||||||
|
http = require('http');
|
||||||
|
assert = require('assert');
|
||||||
|
|
||||||
|
server = http.createServer(function (request, response) {
|
||||||
|
sys.puts('responding to ' + request.url);
|
||||||
|
|
||||||
|
response.writeHead(200, {'Content-Type': 'text/plain'});
|
||||||
|
response.write('1\n');
|
||||||
|
response.write('');
|
||||||
|
response.write('2\n');
|
||||||
|
response.write('');
|
||||||
|
response.end('3\n');
|
||||||
|
|
||||||
|
this.close();
|
||||||
|
})
|
||||||
|
server.listen(PORT);
|
||||||
|
|
||||||
|
var response="";
|
||||||
|
|
||||||
|
process.addListener('exit', function () {
|
||||||
|
assert.equal('1\n2\n3\n', response);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
server.addListener('listening', function () {
|
||||||
|
var client = http.createClient(PORT);
|
||||||
|
var req = client.request("/");
|
||||||
|
req.end();
|
||||||
|
req.addListener('response', function (res) {
|
||||||
|
assert.equal(200, res.statusCode);
|
||||||
|
res.setEncoding("ascii");
|
||||||
|
res.addListener('data', function (chunk) {
|
||||||
|
response += chunk;
|
||||||
|
});
|
||||||
|
sys.error("Got /hello response");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user