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); |
} |
} |