From c38ecf3405d70a06885ff2f6632bb99a53bbb295 Mon Sep 17 00:00:00 2001 From: Adam Jones Date: Wed, 31 May 2023 16:24:08 +0100 Subject: [PATCH] Fix connection string parsing for overriden hosts (#2977) * Add failing test * Fix test This corresponds to what was line 48 previously, see https://github.com/brianc/node-postgres/pull/2971/files#diff-08a5e82487ebd9b43751630019753901fae0a111f8d009ad2e9d194445e96922L48 * Update packages/pg-connection-string/index.js Co-authored-by: Pete Bacon Darwin --------- Co-authored-by: Brian C Co-authored-by: Pete Bacon Darwin --- packages/pg-connection-string/index.js | 3 ++- packages/pg-connection-string/test/parse.js | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/pg-connection-string/index.js b/packages/pg-connection-string/index.js index e0256752..fc205236 100644 --- a/packages/pg-connection-string/index.js +++ b/packages/pg-connection-string/index.js @@ -49,7 +49,8 @@ function parse(str) { if (!config.host) { // Only set the host if there is no equivalent query param. config.host = decodeURIComponent(hostname) - } else if (hostname) { + } else if (hostname && /^%2f/i.test(hostname)) { + // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host. result.pathname = hostname + result.pathname } diff --git a/packages/pg-connection-string/test/parse.js b/packages/pg-connection-string/test/parse.js index 772a8a0d..749717d0 100644 --- a/packages/pg-connection-string/test/parse.js +++ b/packages/pg-connection-string/test/parse.js @@ -149,6 +149,7 @@ describe('parse', function () { it('configuration parameter host overrides url host', function () { var subject = parse('pg://user:pass@localhost/dbname?host=/unix/socket') + subject.database.should.equal('dbname') subject.host.should.equal('/unix/socket') })