remove ServerResonse.headerSent monkey patch
node.js ServerResponse contains a headersSent field. Use that instead of our patched misnamed version.
Esse commit está contido em:
@@ -15,6 +15,7 @@
|
|||||||
- `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings`
|
- `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings`
|
||||||
- `req.params` is now an object instead of an array
|
- `req.params` is now an object instead of an array
|
||||||
- `res.locals` is no longer a function. It is a plain js object. Treat it as such.
|
- `res.locals` is no longer a function. It is a plain js object. Treat it as such.
|
||||||
|
- `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object
|
||||||
* refactor:
|
* refactor:
|
||||||
- `req.accepts*` with [accepts](https://github.com/expressjs/accepts)
|
- `req.accepts*` with [accepts](https://github.com/expressjs/accepts)
|
||||||
- `req.is` with [type-is](https://github.com/expressjs/type-is)
|
- `req.is` with [type-is](https://github.com/expressjs/type-is)
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ app.handle = function(req, res, done) {
|
|||||||
|
|
||||||
// log to stderr in a non-test env
|
// log to stderr in a non-test env
|
||||||
if ('test' != env) console.error(err.stack || err.toString());
|
if ('test' != env) console.error(err.stack || err.toString());
|
||||||
if (res.headerSent) return req.socket.destroy();
|
if (res.headersSent) return req.socket.destroy();
|
||||||
res.setHeader('Content-Type', 'text/html');
|
res.setHeader('Content-Type', 'text/html');
|
||||||
res.setHeader('Content-Length', Buffer.byteLength(msg));
|
res.setHeader('Content-Length', Buffer.byteLength(msg));
|
||||||
if ('HEAD' == req.method) return res.end();
|
if ('HEAD' == req.method) return res.end();
|
||||||
|
|||||||
@@ -20,18 +20,6 @@ if (ServerResponse.prototype._hasConnectPatch) {
|
|||||||
var setHeader = ServerResponse.prototype.setHeader;
|
var setHeader = ServerResponse.prototype.setHeader;
|
||||||
var writeHead = ServerResponse.prototype.writeHead;
|
var writeHead = ServerResponse.prototype.writeHead;
|
||||||
|
|
||||||
/**
|
|
||||||
* Provide a public "header sent" flag
|
|
||||||
* until node does.
|
|
||||||
*
|
|
||||||
* @return {Boolean}
|
|
||||||
* @api public
|
|
||||||
*/
|
|
||||||
|
|
||||||
ServerResponse.prototype.__defineGetter__('headerSent', function(){
|
|
||||||
return this._header;
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set header `field` to `val`, special-casing
|
* Set header `field` to `val`, special-casing
|
||||||
* the `Set-Cookie` field for multiple support.
|
* the `Set-Cookie` field for multiple support.
|
||||||
|
|||||||
+3
-3
@@ -311,13 +311,13 @@ res.sendfile = function(path, options, fn){
|
|||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
cleanup();
|
cleanup();
|
||||||
if (!self.headerSent) self.removeHeader('Content-Disposition');
|
if (!self.headersSent) self.removeHeader('Content-Disposition');
|
||||||
|
|
||||||
// callback available
|
// callback available
|
||||||
if (fn) return fn(err);
|
if (fn) return fn(err);
|
||||||
|
|
||||||
// list in limbo if there's no callback
|
// list in limbo if there's no callback
|
||||||
if (self.headerSent) return;
|
if (self.headersSent) return;
|
||||||
|
|
||||||
// delegate
|
// delegate
|
||||||
next(err);
|
next(err);
|
||||||
@@ -352,7 +352,7 @@ res.sendfile = function(path, options, fn){
|
|||||||
* Optionally providing an alternate attachment `filename`,
|
* Optionally providing an alternate attachment `filename`,
|
||||||
* and optional callback `fn(err)`. The callback is invoked
|
* and optional callback `fn(err)`. The callback is invoked
|
||||||
* when the data transfer is complete, or when an error has
|
* when the data transfer is complete, or when an error has
|
||||||
* ocurred. Be sure to check `res.headerSent` if you plan to respond.
|
* ocurred. Be sure to check `res.headersSent` if you plan to respond.
|
||||||
*
|
*
|
||||||
* This method uses `res.sendfile()`.
|
* This method uses `res.sendfile()`.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ describe('res', function(){
|
|||||||
app.use(function(req, res){
|
app.use(function(req, res){
|
||||||
res.sendfile('test/fixtures/nope.html', function(err){
|
res.sendfile('test/fixtures/nope.html', function(err){
|
||||||
++calls;
|
++calls;
|
||||||
assert(!res.headerSent);
|
assert(!res.headersSent);
|
||||||
res.send(err.message);
|
res.send(err.message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -77,7 +77,7 @@ describe('res', function(){
|
|||||||
|
|
||||||
app.use(function(req, res){
|
app.use(function(req, res){
|
||||||
res.sendfile('test/fixtures/foo/../user.html', function(err){
|
res.sendfile('test/fixtures/foo/../user.html', function(err){
|
||||||
assert(!res.headerSent);
|
assert(!res.headersSent);
|
||||||
++calls;
|
++calls;
|
||||||
res.send(err.message);
|
res.send(err.message);
|
||||||
});
|
});
|
||||||
@@ -95,7 +95,7 @@ describe('res', function(){
|
|||||||
|
|
||||||
app.use(function(req, res){
|
app.use(function(req, res){
|
||||||
res.sendfile('test/fixtures/user.html', function(err){
|
res.sendfile('test/fixtures/user.html', function(err){
|
||||||
assert(!res.headerSent);
|
assert(!res.headersSent);
|
||||||
req.socket.listeners('error').should.have.length(1); // node's original handler
|
req.socket.listeners('error').should.have.length(1); // node's original handler
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|||||||
Referência em uma Nova Issue
Bloquear um usuário