mirror of https://github.com/nodejs/node.git
Avoided sending empty chunkedEncoding chunks in the middle of http responses
This commit is contained in:
parent
15ec99ec59
commit
895f89d62a
13
lib/http.js
13
lib/http.js
|
@ -392,14 +392,13 @@ OutgoingMessage.prototype.write = function (chunk, encoding) {
|
|||
|
||||
encoding = encoding || "ascii";
|
||||
if (this.chunkedEncoding) {
|
||||
if (typeof chunk == 'string') {
|
||||
this._send(process._byteLength(chunk, encoding).toString(16));
|
||||
} else {
|
||||
this._send(chunk.length.toString(16));
|
||||
var chunkLength = (typeof chunk == 'string' ? process._byteLength(chunk, encoding) : chunk.length);
|
||||
if (chunkLength > 0) {
|
||||
this._send(chunkLength.toString(16));
|
||||
this._send(CRLF);
|
||||
this._send(chunk, encoding);
|
||||
this._send(CRLF);
|
||||
}
|
||||
this._send(CRLF);
|
||||
this._send(chunk, encoding);
|
||||
this._send(CRLF);
|
||||
} else {
|
||||
this._send(chunk, encoding);
|
||||
}
|
||||
|
|
|
@ -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…
Reference in New Issue