From 5f7aaba3fd24e4863db2585236c5bba97f3fc651 Mon Sep 17 00:00:00 2001 From: axiaxixixixi <306232627@qq.com> Date: Mon, 10 Mar 2025 11:41:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dipv6=E7=94=A8url=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E5=BD=A2=E5=BC=8F=E8=BF=9E=E6=8E=A5opengauss?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- py_opengauss/driver/dbapi20.py | 9 ++++--- py_opengauss/resolved/riparse.py | 44 ++++++++++++++++---------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/py_opengauss/driver/dbapi20.py b/py_opengauss/driver/dbapi20.py index aa8c88c..1c425ac 100644 --- a/py_opengauss/driver/dbapi20.py +++ b/py_opengauss/driver/dbapi20.py @@ -434,10 +434,11 @@ def connect(**kw): for addr in addrs: param = deepcopy(kw) if ":" in addr: - host, str_port = addr.strip().split(':') - port = int(str_port) - param['host'] = host - param['port'] = port + parts = addr.strip().rsplit(":", 1) + host, str_port = parts + port = int(str_port) + param['host'] = host + param['port'] = port else: param['host'] = addr kws.append(param) diff --git a/py_opengauss/resolved/riparse.py b/py_opengauss/resolved/riparse.py index 0c205d3..c3ca0eb 100644 --- a/py_opengauss/resolved/riparse.py +++ b/py_opengauss/resolved/riparse.py @@ -225,28 +225,28 @@ def unsplit(t): return s def split_ip(ip, fieldproc = unescape): - if ip[0] == '[': - # IPvN addr - next_pos = ip.find(']') - if next_pos == -1: - # unterminated IPvN block - next_pos = len(ip) - 1 - addr = ip[:next_pos + 1] - pos = next_pos + 1 - next_pos = addr.find(':', pos) - if next_pos == -1: - port = None - else: - port = fieldproc(addr[next_pos + 1:]) - else: - next_pos = ip.find(':') - if next_pos == -1: - addr = fieldproc(ip) - port = None - else: - addr = fieldproc(ip[:next_pos]) - port = fieldproc(ip[next_pos + 1:]) - return addr, port + if ip[0] == '[': + # IPvN addr + next_pos = ip.find(']') + if next_pos == -1: + # unterminated IPvN block + next_pos = len(ip) - 1 + addr = ip[:next_pos + 1] + pos = next_pos + 1 + next_pos = ip.find(':', pos) + if next_pos == -1: + port = None + else: + port = fieldproc(ip[next_pos + 1:]) + else: + next_pos = ip.rfind(':') + if next_pos == -1: + addr = fieldproc(ip) + port = None + else: + addr = fieldproc(ip[:next_pos]) + port = fieldproc(ip[next_pos + 1:]) + return addr, port def split_netloc(netloc, fieldproc = unescape): """ -- Gitee