diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-12-22 09:54:15 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-12-22 09:54:15 +0100 |
commit | ea50af2f89c8bc5ba8b132b971c082a8cce4ad54 (patch) | |
tree | 0e44d3ab0ef1ab961d50c46452078525b04dde97 /jdisc_core/src/main/java | |
parent | 3c9108ed10ba6cb0b02eeceb52f3e3176f8b121a (diff) |
Revert require port from URI when specified in binding
Diffstat (limited to 'jdisc_core/src/main/java')
-rw-r--r-- | jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java index 53d276b3fb6..016a2fd796a 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/UriPattern.java @@ -95,7 +95,7 @@ public class UriPattern implements Comparable<UriPattern> { */ public Match match(URI uri) { // Performance optimization: match in order of increasing cost and decreasing discriminating power. - if (port > 0 && port != uri.getPort()) + if (port > 0 && port != portOrSchemeDefault(uri)) return null; String uriPath = nonNullOrBlank(uri.getRawPath()); @@ -172,6 +172,20 @@ public class UriPattern implements Comparable<UriPattern> { return Integer.parseInt(str); } + private static int portOrSchemeDefault(URI uri) { + return uri.getPort() != -1 ? uri.getPort() + : schemeDefaultPort(uri.getScheme()); + } + + private static int schemeDefaultPort(String scheme) { + if (scheme == null) return -1; + switch (scheme) { + case "http": return 80; + case "https": return 443; + default: return -1; + } + } + private static String normalizeScheme(String scheme) { if (scheme.equals("https")) return "http"; // handle 'https' in bindings and uris as 'http' return scheme; |