Socket
Socket
Sign inDemoInstall

on-finished

Package Overview
Dependencies
1
Maintainers
2
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.1.0 to 2.1.1

5

HISTORY.md

@@ -0,1 +1,6 @@

2.1.1 / 2014-10-22
==================
* Fix handling of pipelined requests
2.1.0 / 2014-08-16

@@ -2,0 +7,0 @@ ==================

82

index.js

@@ -53,3 +53,3 @@ /*!

/**
* Determine is message is already finished.
* Determine if message is already finished.
*

@@ -66,3 +66,3 @@ * @param {object} msg

// OutgoingMessage
return Boolean(!socket || msg.finished || !socket.writable)
return Boolean(msg.finished || (socket && !socket.writable))
}

@@ -80,2 +80,52 @@

/**
* Attach a finished listener to the message.
*
* @param {object} msg
* @param {function} callback
* @private
*/
function attachFinishedListener(msg, callback) {
var eeMsg
var eeSocket
var finished = false
function onFinish(error) {
eeMsg.cancel()
eeSocket.cancel()
finished = true
callback(error)
}
// finished on first message event
eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)
function onSocket(socket) {
// remove listener
msg.removeListener('socket', onSocket)
if (finished) return
if (eeMsg !== eeSocket) return
// finished on first socket event
eeSocket = first([[socket, 'error', 'close']], onFinish)
}
if (msg.socket) {
// socket already assigned
onSocket(msg.socket)
return
}
// wait for socket to be assigned
msg.on('socket', onSocket)
if (msg.socket === undefined) {
// node.js 0.8 patch
patchAssignSocket(msg, onSocket)
}
}
/**
* Attach the listener to the message.

@@ -90,3 +140,2 @@ *

var attached = msg.__onFinished
var socket = msg.socket

@@ -96,8 +145,3 @@ // create a private single listener with queue

attached = msg.__onFinished = createListener(msg)
// finished on first event
first([
[socket, 'error', 'close'],
[msg, 'end', 'finish'],
], attached)
attachFinishedListener(msg, attached)
}

@@ -133,1 +177,21 @@

}
/**
* Patch ServerResponse.prototype.assignSocket for node.js 0.8.
*
* @param {ServerResponse} res
* @param {function} callback
* @private
*/
function patchAssignSocket(res, callback) {
var assignSocket = res.assignSocket
if (typeof assignSocket !== 'function') return
// res.on('socket', callback) is broken in 0.8
res.assignSocket = function _assignSocket(socket) {
assignSocket.call(this, socket)
callback(socket)
}
}

12

package.json
{
"name": "on-finished",
"description": "Execute a callback when a request closes, finishes, or errors",
"version": "2.1.0",
"version": "2.1.1",
"contributors": [

@@ -12,10 +12,10 @@ "Douglas Christopher Wilson <doug@somethingdoug.com>",

"dependencies": {
"ee-first": "1.0.5"
"ee-first": "1.1.0"
},
"devDependencies": {
"istanbul": "0.3.0",
"mocha": "~1.21.4"
"istanbul": "0.3.2",
"mocha": "~2.0.0"
},
"engine": {
"node": ">= 0.8.0"
"engines": {
"node": ">= 0.8"
},

@@ -22,0 +22,0 @@ "files": [

# on-finished
[![NPM Version](http://img.shields.io/npm/v/on-finished.svg?style=flat)](https://www.npmjs.org/package/on-finished)
[![Node.js Version](http://img.shields.io/badge/node.js->=_0.8-brightgreen.svg?style=flat)](http://nodejs.org/download/)
[![Build Status](http://img.shields.io/travis/jshttp/on-finished.svg?style=flat)](https://travis-ci.org/jshttp/on-finished)
[![Coverage Status](https://img.shields.io/coveralls/jshttp/on-finished.svg?style=flat)](https://coveralls.io/r/jshttp/on-finished)
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Node.js Version][node-version-image]][node-version-url]
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url]

@@ -77,3 +78,3 @@ Execute a callback when a request closes, finishes, or errors.

var http = require('http')
var onFinished = require('finished')
var onFinished = require('on-finished')

@@ -92,1 +93,12 @@ http.createServer(function onRequest(req, res) {

[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/on-finished.svg?style=flat
[npm-url]: https://npmjs.org/package/on-finished
[node-version-image]: https://img.shields.io/node/v/on-finished.svg?style=flat
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/on-finished.svg?style=flat
[travis-url]: https://travis-ci.org/jshttp/on-finished
[coveralls-image]: https://img.shields.io/coveralls/jshttp/on-finished.svg?style=flat
[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master
[downloads-image]: https://img.shields.io/npm/dm/on-finished.svg?style=flat
[downloads-url]: https://npmjs.org/package/on-finished
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc