| Index: sdk/lib/io/http_headers.dart
|
| diff --git a/sdk/lib/io/http_headers.dart b/sdk/lib/io/http_headers.dart
|
| index b355aa0c9273c14c46321fb0e48971b208efca56..27069761a08959d93a3e0ce7bd1337ba136cbdd2 100644
|
| --- a/sdk/lib/io/http_headers.dart
|
| +++ b/sdk/lib/io/http_headers.dart
|
| @@ -482,10 +482,12 @@ class _HeaderValue implements HeaderValue {
|
| }
|
| }
|
|
|
| - static _HeaderValue parse(String value, {parameterSeparator: ";"}) {
|
| + static _HeaderValue parse(String value,
|
| + {parameterSeparator: ";",
|
| + preserveBackslash: false}) {
|
| // Parse the string.
|
| var result = new _HeaderValue();
|
| - result._parse(value, parameterSeparator);
|
| + result._parse(value, parameterSeparator, preserveBackslash);
|
| return result;
|
| }
|
|
|
| @@ -516,7 +518,7 @@ class _HeaderValue implements HeaderValue {
|
| return sb.toString();
|
| }
|
|
|
| - void _parse(String s, String parameterSeparator) {
|
| + void _parse(String s, String parameterSeparator, bool preserveBackslash) {
|
| int index = 0;
|
|
|
| bool done() => index == s.length;
|
| @@ -569,10 +571,14 @@ class _HeaderValue implements HeaderValue {
|
| StringBuffer sb = new StringBuffer();
|
| index++;
|
| while (!done()) {
|
| + print(s[index]);
|
| if (s[index] == "\\") {
|
| if (index + 1 == s.length) {
|
| throw new HttpException("Failed to parse header value");
|
| }
|
| + if (preserveBackslash && s[index + 1] != "\"") {
|
| + sb.write(s[index]);
|
| + }
|
| index++;
|
| } else if (s[index] == "\"") {
|
| index++;
|
| @@ -641,7 +647,7 @@ class _ContentType extends _HeaderValue implements ContentType {
|
|
|
| static _ContentType parse(String value) {
|
| var result = new _ContentType._();
|
| - result._parse(value, ";");
|
| + result._parse(value, ";", false);
|
| int index = result._value.indexOf("/");
|
| if (index == -1 || index == (result._value.length - 1)) {
|
| result._primaryType = result._value.trim().toLowerCase();
|
|
|