Relax validation of HTTP header values to retain L/M behavior am: 75687ca5ae am: 1740336c89
am: 9ad3567dfd
* commit '9ad3567dfdc7b12fd494de8be166ecfd208b6abd':
Relax validation of HTTP header values to retain L/M behavior
Change-Id: I556a60612256e1dd29b7511b08dbb40bea2144e8
diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java
index 40f4f0f..47c6010 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/RequestTest.java
@@ -188,8 +188,11 @@
assertForbiddenHeader("\t");
assertForbiddenHeader("\u001f");
assertForbiddenHeader("\u007f");
- assertForbiddenHeader("\u0080");
- assertForbiddenHeader("\ud83c\udf69");
+
+ // ANDROID-BEGIN Workaround for http://b/28867041
+ // assertForbiddenHeader("\u0080");
+ // assertForbiddenHeader("\ud83c\udf69");
+ // ANDROID-END
}
private void assertForbiddenHeader(String s) {
diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/URLConnectionTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/URLConnectionTest.java
index 59cbc54..3598da0 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/URLConnectionTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/URLConnectionTest.java
@@ -2811,11 +2811,14 @@
fail();
} catch (IllegalArgumentException expected) {
}
- try {
- connection.addRequestProperty("Name", "\u2615\ufe0f");
- fail();
- } catch (IllegalArgumentException expected) {
- }
+
+ // ANDROID-BEGIN Disabled for http://b/28867041
+ // try {
+ // connection.addRequestProperty("Name", "\u2615\ufe0f");
+ // fail();
+ // } catch (IllegalArgumentException expected) {
+ // }
+ // ANDROID-END
}
@Test public void responseHeaderParsingIsLenient() throws Exception {
diff --git a/okhttp/src/main/java/com/squareup/okhttp/Headers.java b/okhttp/src/main/java/com/squareup/okhttp/Headers.java
index dad91bf..d5b4cef 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/Headers.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/Headers.java
@@ -304,7 +304,12 @@
for (int i = 0, length = value.length(); i < length; i++) {
char c = value.charAt(i);
- if (c <= '\u001f' || c >= '\u007f') {
+ // ANDROID-BEGIN
+ // http://b/28867041 - keep things working for apps that rely on Android's (out of spec)
+ // UTF-8 header encoding behavior.
+ // if (c <= '\u001f' || c >= '\u007f') {
+ if (c <= '\u001f' || c == '\u007f') {
+ // ANDROID-END
throw new IllegalArgumentException(String.format(
"Unexpected char %#04x at %d in header value: %s", (int) c, i, value));
}