Sha256: dad51f94cf32d3579862b7e52172e7d945da034cae7aaae20a4f7f17365590e2

Contents?: true

Size: 1.47 KB

Versions: 28

Compression:

Stored size: 1.47 KB

Contents

/*!
 * Connect
 * Copyright(c) 2011 TJ Holowaychuk
 * MIT Licensed
 */

/**
 * Module dependencies.
 */

var http = require('http')
  , res = http.OutgoingMessage.prototype;

// original setHeader()

var setHeader = res.setHeader;

// original _renderHeaders()

var _renderHeaders = res._renderHeaders;

if (res._hasConnectPatch) return;

/**
 * Provide a public "header sent" flag
 * until node does.
 *
 * @return {Boolean}
 * @api public
 */

res.__defineGetter__('headerSent', function(){
  return this._headerSent;
});

/**
 * Set header `field` to `val`, special-casing
 * the `Set-Cookie` field for multiple support.
 *
 * @param {String} field
 * @param {String} val
 * @api public
 */

res.setHeader = function(field, val){
  var key = field.toLowerCase()
    , prev;

  // special-case Set-Cookie
  if (this._headers && 'set-cookie' == key) {
    if (prev = this.getHeader(field)) {
      val = Array.isArray(prev)
        ? prev.concat(val)
        : [prev, val];
    }
  // charset
  } else if ('content-type' == key && this.charset) {
    val += '; charset=' + this.charset;
  }

  return setHeader.call(this, field, val);
};

/**
 * Proxy `res.end()` to expose a 'header' event,
 * allowing arbitrary augmentation before the header
 * fields are written to the socket.
 *
 * NOTE: this _only_ supports node's progressive header
 * field API aka `res.setHeader()`.
 */

res._renderHeaders = function(){
  this.emit('header');
  return _renderHeaders.call(this);
};

res._hasConnectPatch = true;

Version data entries

28 entries across 28 versions & 3 rubygems

Version Path
blackboard-3.1.9 lib/site_template/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.8.2 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.8.1 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.8.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.7.2 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.7.1 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.7.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.6.1 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.6.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.5.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.4.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.3.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.5 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.4 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.3 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.2 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.1 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.2.0 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.1.6 server/node_modules/express/node_modules/connect/lib/patch.js
vulcan-0.1.5 server/node_modules/express/node_modules/connect/lib/patch.js