Skip to content

Commit f4d0faa

Browse files
committed
Don't encode : and @, close AsyncHttpClient#944
1 parent e78cd21 commit f4d0faa

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

api/src/main/java/org/asynchttpclient/util/Utf8UrlEncoder.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public final class Utf8UrlEncoder {
3030
public final static BitSet RFC3986_UNRESERVED_CHARS = new BitSet(256);
3131
public final static BitSet RFC3986_RESERVED_CHARS = new BitSet(256);
3232
public final static BitSet RFC3986_SUBDELIM_CHARS = new BitSet(256);
33+
public final static BitSet RFC3986_PCHARS = new BitSet(256);
3334
public final static BitSet BUILT_PATH_UNTOUCHED_CHARS = new BitSet(256);
3435
public final static BitSet BUILT_QUERY_UNTOUCHED_CHARS = new BitSet(256);
3536
// http://www.w3.org/TR/html5/forms.html#application/x-www-form-urlencoded-encoding-algorithm
@@ -89,16 +90,19 @@ public final class Utf8UrlEncoder {
8990
RFC3986_RESERVED_CHARS.set('[');
9091
RFC3986_RESERVED_CHARS.set(']');
9192

92-
BUILT_PATH_UNTOUCHED_CHARS.or(RFC3986_UNRESERVED_CHARS);
93+
RFC3986_PCHARS.or(RFC3986_UNRESERVED_CHARS);
94+
RFC3986_PCHARS.or(RFC3986_SUBDELIM_CHARS);
95+
RFC3986_PCHARS.set(':');
96+
RFC3986_PCHARS.set('@');
97+
98+
BUILT_PATH_UNTOUCHED_CHARS.or(RFC3986_PCHARS);
9399
BUILT_PATH_UNTOUCHED_CHARS.set('%');
94-
BUILT_PATH_UNTOUCHED_CHARS.or(RFC3986_SUBDELIM_CHARS);
95-
BUILT_PATH_UNTOUCHED_CHARS.set(':');
96-
BUILT_PATH_UNTOUCHED_CHARS.set('@');
97100
BUILT_PATH_UNTOUCHED_CHARS.set('/');
98101

99-
BUILT_QUERY_UNTOUCHED_CHARS.or(RFC3986_UNRESERVED_CHARS);
100-
BUILT_QUERY_UNTOUCHED_CHARS.or(RFC3986_RESERVED_CHARS);
102+
BUILT_QUERY_UNTOUCHED_CHARS.or(RFC3986_PCHARS);
101103
BUILT_QUERY_UNTOUCHED_CHARS.set('%');
104+
BUILT_QUERY_UNTOUCHED_CHARS.set('/');
105+
BUILT_QUERY_UNTOUCHED_CHARS.set('?');
102106
}
103107

104108
private static final char[] HEX = "0123456789ABCDEF".toCharArray();

0 commit comments

Comments
 (0)