From 385853ddb4df220a7cfa72792675e94c2ef90aa0 Mon Sep 17 00:00:00 2001 From: Matthew Giannini Date: Fri, 21 Jul 2023 10:19:18 -0400 Subject: [PATCH] sys: fix Uri.decode to handle ipv6 addresses --- src/sys/java/fan/sys/Uri.java | 6 +++--- src/sys/js/fan/Uri.js | 6 +++--- src/testSys/fan/UriTest.fan | 7 +++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/sys/java/fan/sys/Uri.java b/src/sys/java/fan/sys/Uri.java index b22de121e..19ee42004 100644 --- a/src/sys/java/fan/sys/Uri.java +++ b/src/sys/java/fan/sys/Uri.java @@ -1544,12 +1544,12 @@ static String toSection(int section) charMap['='] = USER | HOST | PATH | QUERY | FRAG; // gen-delimiter symbols - charMap[':'] = PATH | USER | QUERY | FRAG; + charMap[':'] = HOST | PATH | USER | QUERY | FRAG; charMap['/'] = PATH | QUERY | FRAG; charMap['?'] = QUERY | FRAG; charMap['#'] = 0; - charMap['['] = 0; - charMap[']'] = 0; + charMap['['] = HOST; + charMap[']'] = HOST; charMap['@'] = PATH | QUERY | FRAG; // delimiter escape map - which characters need to diff --git a/src/sys/js/fan/Uri.js b/src/sys/js/fan/Uri.js index e0a019513..694e81b84 100644 --- a/src/sys/js/fan/Uri.js +++ b/src/sys/js/fan/Uri.js @@ -1482,12 +1482,12 @@ fan.sys.Uri.charMap[59] = fan.sys.Uri.USER | fan.sys.Uri.HOST | fan.sys.Uri.PAT fan.sys.Uri.charMap[61] = fan.sys.Uri.USER | fan.sys.Uri.HOST | fan.sys.Uri.PATH | fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; // gen-delimiter symbols -fan.sys.Uri.charMap[58] = fan.sys.Uri.PATH | fan.sys.Uri.USER | fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; +fan.sys.Uri.charMap[58] = fan.sys.Uri.HOST | fan.sys.Uri.PATH | fan.sys.Uri.USER | fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; fan.sys.Uri.charMap[47] = fan.sys.Uri.PATH | fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; fan.sys.Uri.charMap[63] = fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; fan.sys.Uri.charMap[35] = 0; -fan.sys.Uri.charMap[91] = 0; -fan.sys.Uri.charMap[93] = 0; +fan.sys.Uri.charMap[91] = fan.sys.Uri.HOST; +fan.sys.Uri.charMap[93] = fan.sys.Uri.HOST; fan.sys.Uri.charMap[64] = fan.sys.Uri.PATH | fan.sys.Uri.QUERY | fan.sys.Uri.FRAG; // delimiter escape map - which characters need to diff --git a/src/testSys/fan/UriTest.fan b/src/testSys/fan/UriTest.fan index 947ab2ce7..43c99fc45 100644 --- a/src/testSys/fan/UriTest.fan +++ b/src/testSys/fan/UriTest.fan @@ -285,6 +285,13 @@ class UriTest : Test verifyEq(uri.userInfo, userInfo) verifyEq(uri.host, host) verifyEq(uri.port, port) + + // ensure decode + uri = Uri.decode(uri.toStr) + verifyEq(uri.auth, auth) + verifyEq(uri.userInfo, userInfo) + verifyEq(uri.host, host) + verifyEq(uri.port, port) } //////////////////////////////////////////////////////////////////////////