Chromium Code Reviews| Index: sdk/lib/io/http_headers.dart |
| diff --git a/sdk/lib/io/http_headers.dart b/sdk/lib/io/http_headers.dart |
| index 47001282fce35a26c2eba1d4b7bfc8f3e1bc419a..81639988178923013664a5e841105e91d9006142 100644 |
| --- a/sdk/lib/io/http_headers.dart |
| +++ b/sdk/lib/io/http_headers.dart |
| @@ -681,6 +681,7 @@ class _HeaderValue implements HeaderValue { |
| while (!done()) { |
| if (s[index] == " " || |
| s[index] == "\t" || |
| + s[index] == "," || |
| s[index] == parameterSeparator) break; |
| index++; |
| } |
| @@ -695,7 +696,7 @@ class _HeaderValue implements HeaderValue { |
| } |
| void maybeExpect(String expected) { |
| - if (s[index] == expected) index++; |
| + if (!done() && s[index] == expected) index++; |
| } |
| void parseParameters() { |
| @@ -705,14 +706,17 @@ class _HeaderValue implements HeaderValue { |
| String parseParameterName() { |
| int start = index; |
| while (!done()) { |
| - if (s[index] == " " || s[index] == "\t" || s[index] == "=") break; |
| + if (s[index] == " " || |
| + s[index] == "\t" || |
| + s[index] == "=" || |
| + s[index] == ",") break; |
| index++; |
| } |
| return s.substring(start, index).toLowerCase(); |
| } |
| String parseParameterValue() { |
| - if (s[index] == "\"") { |
| + if (!done() && s[index] == "\"") { |
| // Parse quoted value. |
| StringBuffer sb = new StringBuffer(); |
| index++; |
| @@ -735,7 +739,8 @@ class _HeaderValue implements HeaderValue { |
| return sb.toString(); |
| } else { |
| // Parse non-quoted value. |
| - return parseValue(); |
| + var val = parseValue(); |
| + return val == "" ? null : val; |
| } |
| } |
| @@ -744,7 +749,7 @@ class _HeaderValue implements HeaderValue { |
| if (done()) return; |
| String name = parseParameterName(); |
| skipWS(); |
|
Søren Gjesse
2015/10/23 15:09:59
I think you should add
if (done()) return;
her
butlermatt
2015/10/23 15:44:11
Done.
|
| - expect("="); |
| + maybeExpect("="); |
| skipWS(); |
|
Søren Gjesse
2015/10/23 15:09:59
ditto add
if (done()) return;
here instead of
butlermatt
2015/10/23 15:44:11
Done.
|
| String value = parseParameterValue(); |
| if (name == 'charset' && this is _ContentType) { |
| @@ -754,6 +759,8 @@ class _HeaderValue implements HeaderValue { |
| parameters[name] = value; |
| skipWS(); |
| if (done()) return; |
| + // TODO: Implement support for multi-valued parameters. |
| + if(s[index] == ",") return; |
| expect(parameterSeparator); |
| } |
| } |