From 1d86cb16c482a874f50aaec1f72070935889af1d Mon Sep 17 00:00:00 2001 From: AaronNGray Date: Mon, 31 Jul 2017 02:31:03 +0100 Subject: [PATCH 1/2] Modified 'lib/server.js' to deal with IP addresses correctly. --- lib/server.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/server.js b/lib/server.js index fd59f52..e84173d 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1,4 +1,5 @@ var assert = require('assert'); +var net = require('net'); var dgram = require('dgram'); var EventEmitter = require('events').EventEmitter; var util = require('util'); @@ -50,7 +51,12 @@ Server.prototype.listen = function listen(port, address, callback) { var self = this; - this._socket = dgram.createSocket('udp6'); + var ip_version = net.isIP(address); + + if (!ip_version) + self.emit('error', new Error("Invalid IP address")); + + this._socket = dgram.createSocket((ip_version == 4) ? 'udp4' : 'udp6'); this._socket.once('listening', function () { self.emit('listening'); if (typeof (callback) === 'function') @@ -71,7 +77,7 @@ Server.prototype.listen = function listen(port, address, callback) { }; var src = { - family: 'udp6', + family: ((ip_version == 4) ? 'udp4' : 'udp6'), address: rinfo.address, port: rinfo.port }; From 225ea893ee4209c38da41b88dada6cb14213cdbb Mon Sep 17 00:00:00 2001 From: Song Zheng Date: Sat, 24 Mar 2018 16:09:02 -0700 Subject: [PATCH 2/2] fix comments --- lib/server.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/server.js b/lib/server.js index e84173d..cf9f0ed 100644 --- a/lib/server.js +++ b/lib/server.js @@ -7,7 +7,9 @@ var util = require('util'); var Query = require('./query'); var DnsError = require('./errors'); - +function getFamily(ipVersion) { + return (ipVersion == 4) ? 'udp4' : 'udp6'; +} ///--- Globals @@ -52,11 +54,12 @@ Server.prototype.listen = function listen(port, address, callback) { var self = this; var ip_version = net.isIP(address); + var ip_family = getFamily(ip_version); if (!ip_version) self.emit('error', new Error("Invalid IP address")); - this._socket = dgram.createSocket((ip_version == 4) ? 'udp4' : 'udp6'); + this._socket = dgram.createSocket(ip_family); this._socket.once('listening', function () { self.emit('listening'); if (typeof (callback) === 'function') @@ -77,7 +80,7 @@ Server.prototype.listen = function listen(port, address, callback) { }; var src = { - family: ((ip_version == 4) ? 'udp4' : 'udp6'), + family: ip_family, address: rinfo.address, port: rinfo.port };