Imported Upstream version 3.12.0

Former-commit-id: cf92446697332992ec36726e78eb8703e1f259d7
This commit is contained in:
Jo Shields
2015-01-13 10:44:36 +00:00
parent 8b9b85e7f5
commit 181b81b4a4
659 changed files with 12743 additions and 16300 deletions

View File

@ -120,9 +120,17 @@ namespace System.Net.Http.Headers
public string Name {
get {
return FindParameter ("name");
var value = FindParameter ("name");
if (value == null)
return null;
return DecodeValue (value, false);
}
set {
if (value != null)
value = EncodeBase64Value (value);
SetValue ("name", value);
}
}
@ -249,6 +257,11 @@ namespace System.Net.Http.Headers
continue;
}
if (!Lexer.IsValidCharacter (ch) || ch == '*' || ch == '?' || ch == '%') {
sb.Append (Uri.HexEscape (ch));
continue;
}
sb.Append (ch);
}

View File

@ -170,7 +170,7 @@ namespace System.Net.Http.Headers
} else {
value.From = nvalue;
t = lexer.Scan ();
t = lexer.Scan (recognizeDash: true);
if (t != Token.Type.SeparatorDash)
return false;

View File

@ -96,6 +96,7 @@ namespace System.Net.Http.Headers
HeaderInfo.CreateSingle<AuthenticationHeaderValue> ("Authorization", AuthenticationHeaderValue.TryParse, HttpHeaderKind.Request),
HeaderInfo.CreateSingle<CacheControlHeaderValue> ("Cache-Control", CacheControlHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
HeaderInfo.CreateMulti<string> ("Connection", CollectionParser.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
HeaderInfo.CreateSingle<ContentDispositionHeaderValue> ("Content-Disposition", ContentDispositionHeaderValue.TryParse, HttpHeaderKind.Content),
HeaderInfo.CreateMulti<string> ("Content-Encoding", CollectionParser.TryParse, HttpHeaderKind.Content),
HeaderInfo.CreateMulti<string> ("Content-Language", CollectionParser.TryParse, HttpHeaderKind.Content),
HeaderInfo.CreateSingle<long> ("Content-Length", Parser.Long.TryParse, HttpHeaderKind.Content),

View File

@ -193,13 +193,18 @@ namespace System.Net.Http.Headers
//
for (; i < input.Length; ++i) {
char s = input[i];
if (s > last_token_char || !token_chars[s])
if (!IsValidCharacter (s))
return false;
}
return i > 0;
}
public static bool IsValidCharacter (char input)
{
return input <= last_token_char && token_chars[input];
}
public void EatChar ()
{
++pos;
@ -247,7 +252,7 @@ namespace System.Net.Http.Headers
return false;
}
public Token Scan ()
public Token Scan (bool recognizeDash = false)
{
int start = pos;
if (s == null)
@ -279,8 +284,12 @@ namespace System.Net.Http.Headers
ttype = Token.Type.SeparatorSlash;
break;
case '-':
ttype = Token.Type.SeparatorDash;
break;
if (recognizeDash) {
ttype = Token.Type.SeparatorDash;
break;
}
goto default;
case ',':
ttype = Token.Type.SeparatorComma;
break;

View File

@ -127,7 +127,7 @@ namespace System.Net.Http.Headers
int number;
token_read = false;
t = lexer.Scan ();
t = lexer.Scan (recognizeDash: true);
switch (t.Kind) {
case Token.Type.SeparatorDash:
t = lexer.Scan ();
@ -144,7 +144,7 @@ namespace System.Net.Http.Headers
switch (values.Length) {
case 1:
t = lexer.Scan ();
t = lexer.Scan (recognizeDash: true);
from = number;
switch (t.Kind) {
case Token.Type.SeparatorDash: