From 42964272149e2b8f5f3959100c43210cd508e2f5 Mon Sep 17 00:00:00 2001 From: Thibault Meyer <0xbaadf00d@users.noreply.github.com> Date: Fri, 12 Aug 2016 11:42:06 +0200 Subject: [PATCH] Fix #3437: Cannot connect to PostgreSQL via IPv6 address (#3442) * Change PostgreSQL connstring parsing to handle IPv6 * Fix used variable * Remove redundant code + use variable --- models/models.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models/models.go b/models/models.go index ace9a2167..ac69a778e 100644 --- a/models/models.go +++ b/models/models.go @@ -114,12 +114,12 @@ func getEngine() (*xorm.Engine, error) { } case "postgres": host, port := "127.0.0.1", "5432" - fields := strings.Split(DbCfg.Host, ":") - if len(fields) > 0 && len(strings.TrimSpace(fields[0])) > 0 { - host = fields[0] - } - if len(fields) > 1 && len(strings.TrimSpace(fields[1])) > 0 { - port = fields[1] + if strings.Contains(DbCfg.Host, ":") && !strings.HasSuffix(DbCfg.Host, "]") { + idx := strings.LastIndex(DbCfg.Host, ":") + host = DbCfg.Host[:idx] + port = DbCfg.Host[idx+1:] + } else if len(DbCfg.Host) > 0 { + host = DbCfg.Host } if host[0] == '/' { // looks like a unix socket