You've already forked linux-packaging-mono
Imported Upstream version 3.8.0
Former-commit-id: 6a76a29bd07d86e57c6c8da45c65ed5447d38a61
This commit is contained in:
@@ -211,6 +211,10 @@ namespace System.Net.Http.Headers
|
||||
|
||||
static string EncodeBase64Value (string value)
|
||||
{
|
||||
bool quoted = value.Length > 1 && value [0] == '"' && value [value.Length - 1] == '"';
|
||||
if (quoted)
|
||||
value = value.Substring (1, value.Length - 2);
|
||||
|
||||
for (int i = 0; i < value.Length; ++i) {
|
||||
var ch = value[i];
|
||||
if (ch > 127) {
|
||||
@@ -220,7 +224,7 @@ namespace System.Net.Http.Headers
|
||||
}
|
||||
}
|
||||
|
||||
if (!Lexer.IsValidToken (value))
|
||||
if (quoted || !Lexer.IsValidToken (value))
|
||||
return "\"" + value + "\"";
|
||||
|
||||
return value;
|
||||
|
@@ -34,6 +34,7 @@ namespace System.Net.Http
|
||||
public abstract class DelegatingHandler : HttpMessageHandler
|
||||
{
|
||||
bool disposed;
|
||||
HttpMessageHandler handler;
|
||||
|
||||
protected DelegatingHandler ()
|
||||
{
|
||||
@@ -47,13 +48,24 @@ namespace System.Net.Http
|
||||
InnerHandler = innerHandler;
|
||||
}
|
||||
|
||||
public HttpMessageHandler InnerHandler { get; set; }
|
||||
public HttpMessageHandler InnerHandler {
|
||||
get {
|
||||
return handler;
|
||||
}
|
||||
set {
|
||||
if (value == null)
|
||||
throw new ArgumentNullException ("InnerHandler");
|
||||
|
||||
handler = value;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
if (disposing && !disposed) {
|
||||
disposed = true;
|
||||
InnerHandler.Dispose ();
|
||||
if (InnerHandler != null)
|
||||
InnerHandler.Dispose ();
|
||||
}
|
||||
|
||||
base.Dispose (disposing);
|
||||
|
@@ -1,3 +1,4 @@
|
||||
System.Net.Http/DelegatingHandlerTest.cs
|
||||
System.Net.Http/ByteArrayContentTest.cs
|
||||
System.Net.Http/FormUrlEncodedContentTest.cs
|
||||
System.Net.Http/HttpClientHandlerTest.cs
|
||||
|
@@ -215,6 +215,14 @@ namespace MonoTests.System.Net.Http.Headers
|
||||
value.FileName = "(@)";
|
||||
Assert.AreEqual ("\"(@)\"", value.FileName, "#21");
|
||||
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"(@)\""), value.Parameters.First (), "#22");
|
||||
|
||||
value.FileName = "\"č\"";
|
||||
Assert.AreEqual ("č", value.FileName, "#31");
|
||||
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"=?utf-8?B?xI0=?=\""), value.Parameters.First (), "#32");
|
||||
|
||||
value.FileName = "\"quoted\"";
|
||||
Assert.AreEqual ("\"quoted\"", value.FileName, "#41");
|
||||
Assert.AreEqual (new NameValueHeaderValue ("filename", "\"quoted\""), value.Parameters.First (), "#42");
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@@ -0,0 +1,63 @@
|
||||
//
|
||||
// DelegatingHandlerTest.cs
|
||||
//
|
||||
// Authors:
|
||||
// Marek Safar <marek.safar@gmail.com>
|
||||
//
|
||||
// Copyright (C) 2014 Xamarin Inc (http://www.xamarin.com)
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using System.Net.Http;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MonoTests.System.Net.Http
|
||||
{
|
||||
[TestFixture]
|
||||
public class DelegatingHandlerTest
|
||||
{
|
||||
class DefaultHandler : DelegatingHandler
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void DisposeTest ()
|
||||
{
|
||||
var handler = new DefaultHandler ();
|
||||
handler.Dispose ();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void InnerHandler_Invalid ()
|
||||
{
|
||||
var handler = new DefaultHandler ();
|
||||
try {
|
||||
handler.InnerHandler = null;
|
||||
Assert.Fail ("#1");
|
||||
} catch (ArgumentNullException) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user