Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Pouncey <kjpou@pt.lu>2018-11-12 06:00:18 +0300
committerLudovic Henry <luhenry@microsoft.com>2018-11-12 06:00:18 +0300
commit521b8a0b3c49a2741035d0076b81fa9cea13e0ed (patch)
treeaaf2760628fd6453286c4b6a083d61cad5317a8d
parent5d2525527ef827f9ad669a8a32c36c05bce1d843 (diff)
[wasm] Make WasmHttpMessageHandler the default handler for WebAssembly (#11631)
* Clean up leaks in the WasmHttpMessageHandler. - Most of the leaks present themselves during a Cancel of a streaming request. * Make WasmHttpMessageHandler the default handler for WebAssembly - Required libraries WebAssembly.Net.Http.dll and WebAssembly.Bindings.dll. * Clean up spacing
-rw-r--r--mcs/class/System.Net.Http/System.Net.Http/HttpClient.wasm.cs35
-rw-r--r--sdks/wasm/WasmHttpMessageHandler.cs5
2 files changed, 33 insertions, 7 deletions
diff --git a/mcs/class/System.Net.Http/System.Net.Http/HttpClient.wasm.cs b/mcs/class/System.Net.Http/System.Net.Http/HttpClient.wasm.cs
index 304d9de30c3..86a6edd4027 100644
--- a/mcs/class/System.Net.Http/System.Net.Http/HttpClient.wasm.cs
+++ b/mcs/class/System.Net.Http/System.Net.Http/HttpClient.wasm.cs
@@ -18,13 +18,34 @@ namespace System.Net.Http
{
if (GetHttpMessageHandler == null)
- return GetFallback("No custom HttpClientHandler registered");
-
- var handler = GetHttpMessageHandler();
- if (handler == null)
- return GetFallback($"Custom HttpMessageHandler is not valid");
-
- return handler;
+ {
+ Type type = Type.GetType("WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler, WebAssembly.Net.Http");
+ if (type == null)
+ return GetFallback ("Invalid WebAssembly Module? Cannot find WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler");
+
+ MethodInfo method = type.GetMethod("GetHttpMessageHandler", BindingFlags.Static | BindingFlags.NonPublic);
+ if (method == null)
+ return GetFallback ("Your WebAssembly version does not support obtaining of the custom HttpClientHandler");
+
+ object ret = method.Invoke(null, null);
+ if (ret == null)
+ return GetFallback ("WebAssembly returned no custom HttpClientHandler");
+
+ var handler = ret as HttpMessageHandler;
+ if (handler == null)
+ return GetFallback ($"{ret?.GetType()} is not a valid HttpMessageHandler");
+
+ return handler;
+
+ }
+ else
+ {
+ var handler = GetHttpMessageHandler();
+ if (handler == null)
+ return GetFallback($"Custom HttpMessageHandler is not valid");
+
+ return handler;
+ }
}
static HttpMessageHandler GetFallback(string message)
diff --git a/sdks/wasm/WasmHttpMessageHandler.cs b/sdks/wasm/WasmHttpMessageHandler.cs
index 89e0bff577f..dacbeeb18f0 100644
--- a/sdks/wasm/WasmHttpMessageHandler.cs
+++ b/sdks/wasm/WasmHttpMessageHandler.cs
@@ -50,6 +50,11 @@ namespace WebAssembly.Net.Http.HttpClient
handlerInit();
}
+ private static WasmHttpMessageHandler GetHttpMessageHandler()
+ {
+ return new WasmHttpMessageHandler();
+ }
+
private void handlerInit()
{
window = (JSObject)WebAssembly.Runtime.GetGlobalObject("window");