Skip to content

Commit 51bf508

Browse files
author
mjgp2
committed
Using hostaddr will cache the DNS lookup
"If host is specified without hostaddr, a host name lookup occurs." https://www.postgresql.org/docs/8.1/libpq.html#LIBPQ-CONNECT
1 parent 5538df6 commit 51bf508

File tree

2 files changed

+2
-52
lines changed

2 files changed

+2
-52
lines changed

packages/pg/lib/connection-parameters.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,7 @@ class ConnectionParameters {
156156
if (this.client_encoding) {
157157
params.push('client_encoding=' + quoteParamValue(this.client_encoding))
158158
}
159-
dns.lookup(this.host, function (err, address) {
160-
if (err) return cb(err, null)
161-
params.push('hostaddr=' + quoteParamValue(address))
162-
return cb(null, params.join(' '))
163-
})
159+
return cb(null, params.join(' '))
164160
}
165161
}
166162

packages/pg/test/unit/connection-parameters/creation-tests.js

+1-47
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ const helper = require('../test-helper')
33
const assert = require('assert')
44
const ConnectionParameters = require('../../../lib/connection-parameters')
55
const defaults = require('../../../lib').defaults
6-
const dns = require('dns')
76

87
// clear process.env
98
for (var key in process.env) {
@@ -155,14 +154,6 @@ var checkForPart = function (array, part) {
155154
assert.ok(array.indexOf(part) > -1, array.join(' ') + ' did not contain ' + part)
156155
}
157156

158-
const getDNSHost = async function (host) {
159-
return new Promise((resolve, reject) => {
160-
dns.lookup(host, (err, addresses) => {
161-
err ? reject(err) : resolve(addresses)
162-
})
163-
})
164-
}
165-
166157
suite.testAsync('builds simple string', async function () {
167158
var config = {
168159
user: 'brian',
@@ -172,57 +163,20 @@ suite.testAsync('builds simple string', async function () {
172163
database: 'bam',
173164
}
174165
var subject = new ConnectionParameters(config)
175-
const dnsHost = await getDNSHost(config.host)
176166
return new Promise((resolve) => {
177167
subject.getLibpqConnectionString(function (err, constring) {
178168
assert(!err)
179169
var parts = constring.split(' ')
180170
checkForPart(parts, "user='brian'")
181171
checkForPart(parts, "password='xyz'")
182172
checkForPart(parts, "port='888'")
183-
checkForPart(parts, `hostaddr='${dnsHost}'`)
173+
checkForPart(parts, "host='localhost'")
184174
checkForPart(parts, "dbname='bam'")
185175
resolve()
186176
})
187177
})
188178
})
189179

190-
suite.test('builds dns string', async function () {
191-
var config = {
192-
user: 'brian',
193-
password: 'asdf',
194-
port: 5432,
195-
host: 'localhost',
196-
}
197-
var subject = new ConnectionParameters(config)
198-
const dnsHost = await getDNSHost(config.host)
199-
return new Promise((resolve) => {
200-
subject.getLibpqConnectionString(function (err, constring) {
201-
assert(!err)
202-
var parts = constring.split(' ')
203-
checkForPart(parts, "user='brian'")
204-
checkForPart(parts, `hostaddr='${dnsHost}'`)
205-
resolve()
206-
})
207-
})
208-
})
209-
210-
suite.test('error when dns fails', function () {
211-
var config = {
212-
user: 'brian',
213-
password: 'asf',
214-
port: 5432,
215-
host: 'asdlfkjasldfkksfd#!$!!!!..com',
216-
}
217-
var subject = new ConnectionParameters(config)
218-
subject.getLibpqConnectionString(
219-
assert.calls(function (err, constring) {
220-
assert.ok(err)
221-
assert.isNull(constring)
222-
})
223-
)
224-
})
225-
226180
suite.test('connecting to unix domain socket', function () {
227181
var config = {
228182
user: 'brian',

0 commit comments

Comments
 (0)