You've already forked linux-packaging-mono
Imported Upstream version 5.2.0.175
Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
This commit is contained in:
parent
4bdbaf4a88
commit
966bba02bb
@ -292,8 +292,9 @@ namespace System.Net.Http
|
||||
}
|
||||
|
||||
if (header.Key == "Transfer-Encoding") {
|
||||
// Chunked Transfer-Encoding is never set for HttpWebRequest. It's detected
|
||||
// from ContentLength by HttpWebRequest
|
||||
//
|
||||
// Chunked Transfer-Encoding is set for HttpWebRequest later when Content length is checked
|
||||
//
|
||||
values = values.Where (l => l != "chunked");
|
||||
}
|
||||
|
||||
@ -354,15 +355,22 @@ namespace System.Net.Http
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Content length has to be set because HttpWebRequest is running without buffering
|
||||
//
|
||||
var contentLength = content.Headers.ContentLength;
|
||||
if (contentLength != null) {
|
||||
wrequest.ContentLength = contentLength.Value;
|
||||
if (request.Headers.TransferEncodingChunked == true) {
|
||||
wrequest.SendChunked = true;
|
||||
} else {
|
||||
await content.LoadIntoBufferAsync (MaxRequestContentBufferSize).ConfigureAwait (false);
|
||||
wrequest.ContentLength = content.Headers.ContentLength.Value;
|
||||
//
|
||||
// Content length has to be set because HttpWebRequest is running without buffering
|
||||
//
|
||||
var contentLength = content.Headers.ContentLength;
|
||||
if (contentLength != null) {
|
||||
wrequest.ContentLength = contentLength.Value;
|
||||
} else {
|
||||
if (MaxRequestContentBufferSize == 0)
|
||||
throw new InvalidOperationException ("The content length of the request content can't be determined. Either set TransferEncodingChunked to true, load content into buffer, or set MaxRequestContentBufferSize.");
|
||||
|
||||
await content.LoadIntoBufferAsync (MaxRequestContentBufferSize).ConfigureAwait (false);
|
||||
wrequest.ContentLength = content.Headers.ContentLength.Value;
|
||||
}
|
||||
}
|
||||
|
||||
wrequest.ResendContentFactory = content.CopyTo;
|
||||
@ -394,7 +402,6 @@ namespace System.Net.Http
|
||||
return CreateResponseMessage (wresponse, request, cancellationToken);
|
||||
}
|
||||
|
||||
#if NETSTANDARD
|
||||
public bool CheckCertificateRevocationList {
|
||||
get {
|
||||
throw new NotImplementedException ();
|
||||
@ -460,7 +467,5 @@ namespace System.Net.Http
|
||||
throw new NotImplementedException ();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -131,7 +131,6 @@ namespace System.Net.Http
|
||||
throw new PlatformNotSupportedException (EXCEPTION_MESSAGE);
|
||||
}
|
||||
|
||||
#if NETSTANDARD
|
||||
public bool CheckCertificateRevocationList {
|
||||
get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
|
||||
set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
|
||||
@ -170,6 +169,5 @@ namespace System.Net.Http
|
||||
get { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
|
||||
set { throw new PlatformNotSupportedException (EXCEPTION_MESSAGE); }
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -1093,6 +1093,110 @@ namespace MonoTests.System.Net.Http
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
#if FEATURE_NO_BSD_SOCKETS
|
||||
[ExpectedException (typeof (PlatformNotSupportedException))]
|
||||
#endif
|
||||
public void Post_TransferEncodingChunked ()
|
||||
{
|
||||
bool? failed = null;
|
||||
var listener = CreateListener (l => {
|
||||
try {
|
||||
var request = l.Request;
|
||||
|
||||
Assert.IsNull (request.AcceptTypes, "#1");
|
||||
Assert.AreEqual (-1, request.ContentLength64, "#2");
|
||||
Assert.IsNull (request.ContentType, "#3");
|
||||
Assert.AreEqual (0, request.Cookies.Count, "#4");
|
||||
Assert.IsTrue (request.HasEntityBody, "#5");
|
||||
Assert.AreEqual (TestHost, request.Headers ["Host"], "#6b");
|
||||
Assert.AreEqual ("POST", request.HttpMethod, "#7");
|
||||
Assert.IsFalse (request.IsAuthenticated, "#8");
|
||||
Assert.IsTrue (request.IsLocal, "#9");
|
||||
Assert.IsFalse (request.IsSecureConnection, "#10");
|
||||
Assert.IsFalse (request.IsWebSocketRequest, "#11");
|
||||
Assert.IsTrue (request.KeepAlive, "#12");
|
||||
Assert.AreEqual (HttpVersion.Version11, request.ProtocolVersion, "#13");
|
||||
Assert.IsNull (request.ServiceName, "#14");
|
||||
Assert.IsNull (request.UrlReferrer, "#15");
|
||||
Assert.IsNull (request.UserAgent, "#16");
|
||||
Assert.IsNull (request.UserLanguages, "#17");
|
||||
Assert.AreEqual ("chunked", request.Headers ["Transfer-Encoding"], "#18");
|
||||
Assert.IsNull (request.Headers ["Content-Length"], "#19");
|
||||
failed = false;
|
||||
} catch (Exception e) {
|
||||
failed = true;
|
||||
Console.WriteLine (e);
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
var client = new HttpClient ();
|
||||
|
||||
client.DefaultRequestHeaders.TransferEncodingChunked = true;
|
||||
|
||||
var imageContent = new StreamContent (new MemoryStream ());
|
||||
|
||||
var response = client.PostAsync (LocalServer, imageContent).Result;
|
||||
|
||||
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "#101");
|
||||
Assert.AreEqual(false, failed, "#102");
|
||||
} finally {
|
||||
listener.Close ();
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
#if FEATURE_NO_BSD_SOCKETS
|
||||
[ExpectedException (typeof (PlatformNotSupportedException))]
|
||||
#endif
|
||||
public void Post_StreamCaching ()
|
||||
{
|
||||
bool? failed = null;
|
||||
var listener = CreateListener (l => {
|
||||
try {
|
||||
var request = l.Request;
|
||||
|
||||
Assert.IsNull (request.AcceptTypes, "#1");
|
||||
Assert.AreEqual (0, request.ContentLength64, "#2");
|
||||
Assert.IsNull (request.ContentType, "#3");
|
||||
Assert.AreEqual (0, request.Cookies.Count, "#4");
|
||||
Assert.IsFalse (request.HasEntityBody, "#5");
|
||||
Assert.AreEqual (TestHost, request.Headers ["Host"], "#6b");
|
||||
Assert.AreEqual ("POST", request.HttpMethod, "#7");
|
||||
Assert.IsFalse (request.IsAuthenticated, "#8");
|
||||
Assert.IsTrue (request.IsLocal, "#9");
|
||||
Assert.IsFalse (request.IsSecureConnection, "#10");
|
||||
Assert.IsFalse (request.IsWebSocketRequest, "#11");
|
||||
Assert.IsTrue (request.KeepAlive, "#12");
|
||||
Assert.AreEqual (HttpVersion.Version11, request.ProtocolVersion, "#13");
|
||||
Assert.IsNull (request.ServiceName, "#14");
|
||||
Assert.IsNull (request.UrlReferrer, "#15");
|
||||
Assert.IsNull (request.UserAgent, "#16");
|
||||
Assert.IsNull (request.UserLanguages, "#17");
|
||||
Assert.IsNull (request.Headers ["Transfer-Encoding"], "#18");
|
||||
Assert.AreEqual ("0", request.Headers ["Content-Length"], "#19");
|
||||
failed = false;
|
||||
} catch (Exception e) {
|
||||
failed = true;
|
||||
Console.WriteLine (e);
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
var client = new HttpClient ();
|
||||
|
||||
var imageContent = new StreamContent (new MemoryStream ());
|
||||
|
||||
var response = client.PostAsync (LocalServer, imageContent).Result;
|
||||
|
||||
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "#101");
|
||||
Assert.AreEqual(false, failed, "#102");
|
||||
} finally {
|
||||
listener.Close ();
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Category ("MobileNotWorking")] // Missing encoding
|
||||
#if FEATURE_NO_BSD_SOCKETS
|
||||
|
Reference in New Issue
Block a user