From 9db4f1928392fabc646977f10e9be35ee7d3e296 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 11 Apr 2017 18:15:11 +0200 Subject: [PATCH] net: require 'dns' only once Avoid unnecessary calls to require('dns') by caching the result of the first one. PR-URL: https://github.com/nodejs/node/pull/12342 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Colin Ihrig Reviewed-By: Evan Lucas Reviewed-By: James M Snell Reviewed-By: Luigi Pinca --- lib/net.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/net.js b/lib/net.js index 83ab9646db..f8329a1931 100644 --- a/lib/net.js +++ b/lib/net.js @@ -19,8 +19,9 @@ const PipeConnectWrap = process.binding('pipe_wrap').PipeConnectWrap; const ShutdownWrap = process.binding('stream_wrap').ShutdownWrap; const WriteWrap = process.binding('stream_wrap').WriteWrap; - var cluster; +var dns; + const errnoException = util._errnoException; const exceptionWithHostPort = util._exceptionWithHostPort; const isLegalPort = internalNet.isLegalPort; @@ -948,7 +949,7 @@ function realConnect(options, cb) { function lookupAndConnect(self, options) { - const dns = require('dns'); + const dns = lazyDns(); var host = options.host || 'localhost'; var port = options.port; var localAddress = options.localAddress; @@ -1286,6 +1287,13 @@ function emitListeningNT(self) { } +function lazyDns() { + if (dns === undefined) + dns = require('dns'); + return dns; +} + + function listenInCluster(server, address, port, addressType, backlog, fd, exclusive) { exclusive = !!exclusive; @@ -1414,7 +1422,7 @@ Server.prototype.listen = function() { }; function lookupAndListen(self, port, address, backlog, exclusive) { - const dns = require('dns'); + const dns = lazyDns(); dns.lookup(address, function doListen(err, ip, addressType) { if (err) { self.emit('error', err);