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') })