From 0332e09b9db9f4456b72f99de2b2454a9cd417f9 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 28 Feb 2025 14:29:38 +0100 Subject: [PATCH 01/14] testing --- src/mono/browser/runtime/http.ts | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index 743972efd8df71..d59e7e205ef655 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -4,11 +4,12 @@ import BuildConfiguration from "consts:configuration"; import { wrap_as_cancelable_promise } from "./cancelable-promise"; -import { ENVIRONMENT_IS_NODE, Module, loaderHelpers, mono_assert } from "./globals"; +import { ENVIRONMENT_IS_NODE, loaderHelpers, mono_assert } from "./globals"; import { assert_js_interop } from "./invoke-js"; import { MemoryViewType, Span } from "./marshal"; import type { VoidPtr } from "./types/emscripten"; import { ControllablePromise } from "./types/internal"; +import { mono_log_debug } from "./logging"; function verifyEnvironment () { @@ -72,12 +73,11 @@ export function http_wasm_create_controller (): HttpController { return controller; } -function handle_abort_error (promise:Promise) { +function mute_unhandledrejection (promise:Promise) { promise.catch((err) => { if (err && err !== "AbortError" && err.name !== "AbortError" ) { - Module.err("Unexpected error: " + err); + mono_log_debug("http muted" + err); } - // otherwise, it's expected }); } @@ -86,15 +86,15 @@ export function http_wasm_abort (controller: HttpController): void { try { if (!controller.isAborted) { if (controller.streamWriter) { - handle_abort_error(controller.streamWriter.abort()); + mute_unhandledrejection(controller.streamWriter.abort()); controller.isAborted = true; } if (controller.streamReader) { - handle_abort_error(controller.streamReader.cancel()); + mute_unhandledrejection(controller.streamReader.cancel()); controller.isAborted = true; } } - if (!controller.isAborted) { + if (!controller.isAborted && !controller.abortController.signal.aborted) { controller.abortController.abort("AbortError"); } } catch (err) { @@ -138,8 +138,8 @@ export function http_wasm_fetch_stream (controller: HttpController, url: string, if (BuildConfiguration === "Debug") commonAsserts(controller); const transformStream = new TransformStream(); controller.streamWriter = transformStream.writable.getWriter(); - handle_abort_error(controller.streamWriter.closed); - handle_abort_error(controller.streamWriter.ready); + mute_unhandledrejection(controller.streamWriter.closed); + mute_unhandledrejection(controller.streamWriter.ready); const fetch_promise = http_wasm_fetch(controller, url, header_names, header_values, option_names, option_values, transformStream.readable); return fetch_promise; } @@ -182,6 +182,8 @@ export function http_wasm_fetch (controller: HttpController, url: string, header // avoid processing headers if the fetch is canceled controller.responsePromise.then((res: Response) => { controller.response = res; + mono_assert(controller.response, "expected response"); + mono_assert(controller.response.body, "expected response.body"); controller.responseHeaderNames = []; controller.responseHeaderValues = []; if (res.headers && (res.headers).entries) { @@ -250,9 +252,12 @@ export function http_wasm_get_streamed_response_bytes (controller: HttpControlle // the bufferPtr is pinned by the caller const view = new Span(bufferPtr, bufferLength, MemoryViewType.Byte); return wrap_as_cancelable_promise(async () => { + await controller.responsePromise; mono_assert(controller.response, "expected response"); + mono_assert(controller.response.body, "expected response.body"); if (!controller.streamReader) { - controller.streamReader = controller.response.body!.getReader(); + controller.streamReader = controller.response.body.getReader(); + mute_unhandledrejection(controller.streamReader.closed); } if (!controller.currentStreamReaderChunk || controller.currentBufferOffset === undefined) { controller.currentStreamReaderChunk = await controller.streamReader.read(); From d6c80bf6cd23cd79f39fd723aec836a52cdc1a54 Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 28 Feb 2025 16:00:27 +0100 Subject: [PATCH 02/14] Update src/mono/browser/runtime/http.ts Co-authored-by: campersau --- src/mono/browser/runtime/http.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index d59e7e205ef655..77fdfabeabf6a1 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -76,7 +76,7 @@ export function http_wasm_create_controller (): HttpController { function mute_unhandledrejection (promise:Promise) { promise.catch((err) => { if (err && err !== "AbortError" && err.name !== "AbortError" ) { - mono_log_debug("http muted" + err); + mono_log_debug("http muted: " + err); } }); } From d10c332356c666c4841c010342e71b5bd5c9288e Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 28 Feb 2025 16:06:25 +0100 Subject: [PATCH 03/14] // in FF when the verb is HEAD, the body is null --- src/mono/browser/runtime/http.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index 77fdfabeabf6a1..108917ffef3c0e 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -254,7 +254,10 @@ export function http_wasm_get_streamed_response_bytes (controller: HttpControlle return wrap_as_cancelable_promise(async () => { await controller.responsePromise; mono_assert(controller.response, "expected response"); - mono_assert(controller.response.body, "expected response.body"); + if (!controller.response.body) { + // in FF when the verb is HEAD, the body is null + return 0; + } if (!controller.streamReader) { controller.streamReader = controller.response.body.getReader(); mute_unhandledrejection(controller.streamReader.closed); From 983200cf5e618d266ad916fad47308e3af5c1d0f Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 28 Feb 2025 16:31:08 +0100 Subject: [PATCH 04/14] feedback --- src/mono/browser/runtime/http.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index 108917ffef3c0e..235208be20d585 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -183,7 +183,6 @@ export function http_wasm_fetch (controller: HttpController, url: string, header controller.responsePromise.then((res: Response) => { controller.response = res; mono_assert(controller.response, "expected response"); - mono_assert(controller.response.body, "expected response.body"); controller.responseHeaderNames = []; controller.responseHeaderValues = []; if (res.headers && (res.headers).entries) { From dd1f4a1350f539ba382c42b33e9c8b8f20cd227c Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 28 Feb 2025 16:33:13 +0100 Subject: [PATCH 05/14] revert mistake --- src/mono/llvm/llvm-init.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/llvm/llvm-init.proj b/src/mono/llvm/llvm-init.proj index f4ab58522dc050..c54d093bae1ac2 100644 --- a/src/mono/llvm/llvm-init.proj +++ b/src/mono/llvm/llvm-init.proj @@ -13,6 +13,7 @@ $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) $(runtimewinx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) $(runtimeosxx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) + .Debug From 2def530dc937a65a0e3c50e49abbc1c9821d9551 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Thu, 6 Mar 2025 18:06:34 +0100 Subject: [PATCH 06/14] add tests --- .../System/Net/Http/ResponseStreamTest.cs | 96 ++++++++++++++++++- .../NetCoreServer/Handlers/EchoHandler.cs | 64 +++++++++---- 2 files changed, 140 insertions(+), 20 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs index 7f58fd5b2424e8..235cbdd673d92a 100644 --- a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs +++ b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs @@ -230,6 +230,100 @@ await client.GetAsync(remoteServer.EchoUri, HttpCompletionOption.ResponseHeaders #if NET + public static IEnumerable HttpMethods => new object[][] + { + new [] { HttpMethod.Get }, + new [] { HttpMethod.Head }, + new [] { HttpMethod.Post }, + new [] { HttpMethod.Put }, + new [] { HttpMethod.Delete }, + new [] { HttpMethod.Options }, + new [] { HttpMethod.Patch }, + }; + + public static IEnumerable HttpMethodsAndAbort => new object[][] + { + new object[] { HttpMethod.Get, "abortBeforeHeaders" }, + new object[] { HttpMethod.Head , "abortBeforeHeaders"}, + new object[] { HttpMethod.Post , "abortBeforeHeaders"}, + new object[] { HttpMethod.Put , "abortBeforeHeaders"}, + new object[] { HttpMethod.Delete , "abortBeforeHeaders"}, + new object[] { HttpMethod.Options , "abortBeforeHeaders"}, + new object[] { HttpMethod.Patch , "abortBeforeHeaders"}, + + new object[] { HttpMethod.Get, "abortAfterHeaders" }, + new object[] { HttpMethod.Head , "abortAfterHeaders"}, + new object[] { HttpMethod.Post , "abortAfterHeaders"}, + new object[] { HttpMethod.Put , "abortAfterHeaders"}, + new object[] { HttpMethod.Delete , "abortAfterHeaders"}, + new object[] { HttpMethod.Options , "abortAfterHeaders"}, + new object[] { HttpMethod.Patch , "abortAfterHeaders"}, + + new object[] { HttpMethod.Get, "abortDuringBody" }, + new object[] { HttpMethod.Post , "abortDuringBody"}, + new object[] { HttpMethod.Put , "abortDuringBody"}, + new object[] { HttpMethod.Delete , "abortDuringBody"}, + new object[] { HttpMethod.Options , "abortDuringBody"}, + new object[] { HttpMethod.Patch , "abortDuringBody"}, + + }; + + [MemberData(nameof(HttpMethods))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser))] + public async Task BrowserHttpHandler_StreamingResponse(HttpMethod method) + { + var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); + + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp2Server.BaseUri + "echo.ashx"); + req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); + + if(method == HttpMethod.Post) + { + req.Content = new StringContent("hello world"); + } + + using (HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp2Server)) + // we need to switch off Response buffering of default ResponseContentRead option + using (HttpResponseMessage response = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)) + { + using var content = response.Content; + Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(typeof(StreamContent), content.GetType()); + Assert.NotEqual(0, content.Headers.ContentLength); + if (method != HttpMethod.Head) + { + var data = await content.ReadAsByteArrayAsync(); + Assert.NotEqual(0, data.Length); + } + } + } + + [MemberData(nameof(HttpMethodsAndAbort))] + [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser))] + public async Task BrowserHttpHandler_StreamingResponseAbort(HttpMethod method, string abort) + { + var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); + + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp2Server.BaseUri + "echo.ashx?" + abort + "=true"); + req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); + + if (method == HttpMethod.Post) + { + req.Content = new StringContent("hello world"); + } + + HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp2Server); + if (abort == "abortBeforeHeaders") + { + await Assert.ThrowsAsync(() => client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)); + } + else + { + using var res = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); + await Assert.ThrowsAsync(() => res.Content.ReadAsByteArrayAsync()); + } + } + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsChromium))] public async Task BrowserHttpHandler_Streaming() { @@ -486,7 +580,7 @@ public async Task BrowserHttpHandler_StreamingRequest_Http1Fails() [OuterLoop] [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsChromium))] - public async Task BrowserHttpHandler_StreamingResponse() + public async Task BrowserHttpHandler_StreamingResponseLarge() { var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs index 667e99c29dc398..40bf28eff40411 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs +++ b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs @@ -22,26 +22,22 @@ public static async Task InvokeAsync(HttpContext context) return; } - // Add original request method verb as a custom response header. - context.Response.Headers["X-HttpRequest-Method"] = context.Request.Method; - - // Echo back JSON encoded payload. - RequestInformation info = await RequestInformation.CreateAsync(context.Request); - string echoJson = info.SerializeToJson(); - - byte[] bytes = Encoding.UTF8.GetBytes(echoJson); + var qs = context.Request.QueryString.HasValue ? context.Request.QueryString.Value : ""; var delay = 0; - if (context.Request.QueryString.HasValue) + if (qs.Contains("delay1sec")) { - if (context.Request.QueryString.Value.Contains("delay1sec")) - { - delay = 1000; - } - else if (context.Request.QueryString.Value.Contains("delay10sec")) - { - delay = 10000; - } + delay = 1000; + } + else if (qs.Contains("delay10sec")) + { + delay = 10000; + } + + if (qs.Contains("abortBeforeHeaders")) + { + context.Abort(); + return; } if (delay > 0) @@ -49,6 +45,14 @@ public static async Task InvokeAsync(HttpContext context) context.Features.Get().DisableBuffering(); } + // Echo back JSON encoded payload. + RequestInformation info = await RequestInformation.CreateAsync(context.Request); + string echoJson = info.SerializeToJson(); + byte[] bytes = Encoding.UTF8.GetBytes(echoJson); + + // Add original request method verb as a custom response header. + context.Response.Headers["X-HttpRequest-Method"] = context.Request.Method; + // Compute MD5 hash so that clients can verify the received data. using (MD5 md5 = MD5.Create()) { @@ -60,11 +64,33 @@ public static async Task InvokeAsync(HttpContext context) context.Response.ContentLength = bytes.Length; } - if (delay > 0) + await context.Response.StartAsync(CancellationToken.None); + + if (qs.Contains("abortAfterHeaders")) + { + await context.Response.Body.FlushAsync(); + await Task.Delay(10); + context.Abort(); + return; + } + + if(context.Request.Method == "HEAD") + { + return; + } + + if (delay > 0 || qs.Contains("abortDuringBody")) { - await context.Response.StartAsync(CancellationToken.None); await context.Response.Body.WriteAsync(bytes, 0, 10); await context.Response.Body.FlushAsync(); + if (qs.Contains("abortDuringBody")) + { + await context.Response.Body.FlushAsync(); + await Task.Delay(10); + context.Abort(); + return; + } + await Task.Delay(delay); await context.Response.Body.WriteAsync(bytes, 10, bytes.Length-10); await context.Response.Body.FlushAsync(); From 0896f5a1b0c223ef8f59e78ab18620e2e76307fd Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Thu, 6 Mar 2025 18:08:00 +0100 Subject: [PATCH 07/14] do not marshal Response object --- src/mono/browser/runtime/http.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index 235208be20d585..f87bdadda23922 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -177,17 +177,20 @@ export function http_wasm_fetch (controller: HttpController, url: string, header } // make the fetch cancellable controller.responsePromise = wrap_as_cancelable_promise(() => { - return loaderHelpers.fetch_like(url, options); + return loaderHelpers.fetch_like(url, options).then((res: Response) => { + controller.response = res; + return null;// drop the response from the promise chain + }).catch(err => { + throw err; + }); }); // avoid processing headers if the fetch is canceled - controller.responsePromise.then((res: Response) => { - controller.response = res; + controller.responsePromise.then(() => { mono_assert(controller.response, "expected response"); controller.responseHeaderNames = []; controller.responseHeaderValues = []; - if (res.headers && (res.headers).entries) { - const entries: Iterable = (res.headers).entries(); - + if (controller.response.headers && (controller.response.headers).entries) { + const entries: Iterable = (controller.response.headers).entries(); for (const pair of entries) { controller.responseHeaderNames.push(pair[0]); controller.responseHeaderValues.push(pair[1]); From e9b17edf41a1f2fcbd6d14170d3c4aa526dde1b2 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 7 Mar 2025 09:44:24 +0100 Subject: [PATCH 08/14] feedback --- src/mono/browser/runtime/http.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mono/browser/runtime/http.ts b/src/mono/browser/runtime/http.ts index f87bdadda23922..74f86f88791c4d 100644 --- a/src/mono/browser/runtime/http.ts +++ b/src/mono/browser/runtime/http.ts @@ -180,8 +180,6 @@ export function http_wasm_fetch (controller: HttpController, url: string, header return loaderHelpers.fetch_like(url, options).then((res: Response) => { controller.response = res; return null;// drop the response from the promise chain - }).catch(err => { - throw err; }); }); // avoid processing headers if the fetch is canceled From e3d19a4cfd30ea48346621f5eb80133631423707 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Fri, 7 Mar 2025 10:35:01 +0100 Subject: [PATCH 09/14] fix tests --- .../System/Net/Http/ResponseStreamTest.cs | 19 +++++++++---------- .../NetCoreServer/Handlers/EchoHandler.cs | 1 - 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs index 235cbdd673d92a..3b19038258a171 100644 --- a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs +++ b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs @@ -252,7 +252,6 @@ await client.GetAsync(remoteServer.EchoUri, HttpCompletionOption.ResponseHeaders new object[] { HttpMethod.Patch , "abortBeforeHeaders"}, new object[] { HttpMethod.Get, "abortAfterHeaders" }, - new object[] { HttpMethod.Head , "abortAfterHeaders"}, new object[] { HttpMethod.Post , "abortAfterHeaders"}, new object[] { HttpMethod.Put , "abortAfterHeaders"}, new object[] { HttpMethod.Delete , "abortAfterHeaders"}, @@ -274,7 +273,7 @@ public async Task BrowserHttpHandler_StreamingResponse(HttpMethod method) { var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); - var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp2Server.BaseUri + "echo.ashx"); + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp11Server.BaseUri + "echo.ashx"); req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); if(method == HttpMethod.Post) @@ -282,7 +281,7 @@ public async Task BrowserHttpHandler_StreamingResponse(HttpMethod method) req.Content = new StringContent("hello world"); } - using (HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp2Server)) + using (HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server)) // we need to switch off Response buffering of default ResponseContentRead option using (HttpResponseMessage response = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)) { @@ -304,23 +303,23 @@ public async Task BrowserHttpHandler_StreamingResponseAbort(HttpMethod method, s { var WebAssemblyEnableStreamingResponseKey = new HttpRequestOptionsKey("WebAssemblyEnableStreamingResponse"); - var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp2Server.BaseUri + "echo.ashx?" + abort + "=true"); + var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp11Server.BaseUri + "echo.ashx?" + abort + "=true"); req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); - if (method == HttpMethod.Post) + if (method == HttpMethod.Post || method == HttpMethod.Put || method == HttpMethod.Patch) { req.Content = new StringContent("hello world"); } - HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp2Server); - if (abort == "abortBeforeHeaders") + HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server); + if (abort == "abortDuringBody") { - await Assert.ThrowsAsync(() => client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)); + using var res = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); + await Assert.ThrowsAsync(() => res.Content.ReadAsByteArrayAsync()); } else { - using var res = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); - await Assert.ThrowsAsync(() => res.Content.ReadAsByteArrayAsync()); + await Assert.ThrowsAsync(() => client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead)); } } diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs index 40bf28eff40411..690e759a90e8b5 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs +++ b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs @@ -68,7 +68,6 @@ public static async Task InvokeAsync(HttpContext context) if (qs.Contains("abortAfterHeaders")) { - await context.Response.Body.FlushAsync(); await Task.Delay(10); context.Abort(); return; From d8de14895147c56ca208563301ed8d6f5b39cb36 Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 7 Mar 2025 13:11:10 +0100 Subject: [PATCH 10/14] Update src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Alexander Köplinger --- .../Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs index 690e759a90e8b5..1a02f7b3b99a22 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs +++ b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs @@ -73,7 +73,7 @@ public static async Task InvokeAsync(HttpContext context) return; } - if(context.Request.Method == "HEAD") + if (context.Request.Method == "HEAD") { return; } From 39b5dc2f4876b28a1d0037e65415fe962f24c7e7 Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 7 Mar 2025 14:03:34 +0100 Subject: [PATCH 11/14] Update src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs Co-authored-by: campersau --- .../Common/tests/System/Net/Http/ResponseStreamTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs index 3b19038258a171..2ce122a2dbdcaa 100644 --- a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs +++ b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs @@ -276,7 +276,7 @@ public async Task BrowserHttpHandler_StreamingResponse(HttpMethod method) var req = new HttpRequestMessage(method, Configuration.Http.RemoteHttp11Server.BaseUri + "echo.ashx"); req.Options.Set(WebAssemblyEnableStreamingResponseKey, true); - if(method == HttpMethod.Post) + if (method == HttpMethod.Post) { req.Content = new StringContent("hello world"); } From 22abf07cc91cf838776d219f23feb3a3891c63ff Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 7 Mar 2025 14:03:45 +0100 Subject: [PATCH 12/14] Update src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs Co-authored-by: campersau --- .../Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs index 1a02f7b3b99a22..f9f8b0c24f2e01 100644 --- a/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs +++ b/src/libraries/Common/tests/System/Net/Prerequisites/NetCoreServer/Handlers/EchoHandler.cs @@ -73,7 +73,7 @@ public static async Task InvokeAsync(HttpContext context) return; } - if (context.Request.Method == "HEAD") + if (HttpMethods.IsHead(context.Request.Method)) { return; } From 027941a6169a9663c00118da4fe04527f2aef6dd Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 7 Mar 2025 14:03:54 +0100 Subject: [PATCH 13/14] Update src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs Co-authored-by: campersau --- .../Common/tests/System/Net/Http/ResponseStreamTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs index 2ce122a2dbdcaa..61958c04a26b0c 100644 --- a/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs +++ b/src/libraries/Common/tests/System/Net/Http/ResponseStreamTest.cs @@ -311,7 +311,7 @@ public async Task BrowserHttpHandler_StreamingResponseAbort(HttpMethod method, s req.Content = new StringContent("hello world"); } - HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server); + using HttpClient client = CreateHttpClientForRemoteServer(Configuration.Http.RemoteHttp11Server); if (abort == "abortDuringBody") { using var res = await client.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); From 2c2646520e44d4fc8a16ae2e4c52acb183f5f8c8 Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Fri, 7 Mar 2025 18:17:11 +0100 Subject: [PATCH 14/14] fix --- src/mono/llvm/llvm-init.proj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mono/llvm/llvm-init.proj b/src/mono/llvm/llvm-init.proj index c54d093bae1ac2..f4ab58522dc050 100644 --- a/src/mono/llvm/llvm-init.proj +++ b/src/mono/llvm/llvm-init.proj @@ -13,7 +13,6 @@ $(runtimelinuxmuslx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) $(runtimewinx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) $(runtimeosxx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion) - .Debug