dgram: check close callback is function

PR-URL: https://github.com/iojs/io.js/pull/609
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Evan Lucas <evanlucas@me.com>
This commit is contained in:
Yosuke Furukawa 2015-01-27 02:28:18 +09:00 committed by Ben Noordhuis
parent 6ac8bdc0ab
commit 207e48c934
2 changed files with 22 additions and 1 deletions

View File

@ -341,7 +341,7 @@ function afterSend(err) {
Socket.prototype.close = function(callback) {
if (callback)
if (typeof callback === 'function')
this.on('close', callback);
this._healthCheck();
this._stopReceiving();

View File

@ -0,0 +1,21 @@
var assert = require('assert');
var common = require('../common');
var dgram = require('dgram');
var buf = new Buffer(1024);
buf.fill(42);
var socket = dgram.createSocket('udp4');
var closeEvents = 0;
socket.send(buf, 0, buf.length, common.PORT, 'localhost');
// if close callback is not function, ignore the argument.
socket.close('bad argument');
socket.on('close', function() {
++closeEvents;
});
process.on('exit', function() {
assert.equal(closeEvents, 1);
});