From 995ebfb9964e62cae78a2c4e175572ef41645cef Mon Sep 17 00:00:00 2001 From: Diogo Martins Date: Thu, 5 Nov 2026 00:49:27 +0000 Subject: [PATCH 1/2] nghttp2: a response given after the peer reset its stream attaches nothing, so its body no longer leaks and a streamed writer hears the peer gone A peer that resets a stream after its request ended and before the handler answers (a browser cancelling a slow request) leaves nothing on the managed side to mark. ih2_submit_response then copied the response's body into an ih2_stream for a stream nghttp2 had already freed; the HEADERS were dropped at send with no callback, so the copy stayed until the connection closed. A streamed writer created after such a reset wrote into its own orphaned ih2_stream, never heard the reset, and past 64 KiB its flush waited until the connection was disposed (#496). Both submit functions now return 0 without attaching anything when nghttp2_session_find_stream finds no stream. The streamed writer's first write then finds none, which SendStreamedData already reads as that stream's end. Both runtimes' libraries are rebuilt from this source. --- .../native/ioxide_nghttp2_shim.c | 6 + .../linux-arm64/native/libioxide_nghttp2.so | Bin 301672 -> 301680 bytes .../linux-x64/native/libioxide_nghttp2.so | Bin 261792 -> 261824 bytes .../Nghttp2ResetResponseTests.cs | 107 ++++++++++++++++++ tests/Ioxide.Tests.Unit/Program.cs | 1 + 5 files changed, 114 insertions(+) create mode 100644 tests/Ioxide.Tests.Unit/Nghttp2ResetResponseTests.cs diff --git a/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c b/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c index 3c7ba4f0..b8f528f2 100644 --- a/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c +++ b/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c @@ -395,6 +395,9 @@ int ih2_submit_response_stream(ih2_conn *c, int32_t stream_id, if (c == NULL || c->session == NULL) { return NGHTTP2_ERR_INVALID_STATE; } + if (nghttp2_session_find_stream(c->session, stream_id) == NULL) { + return 0; /* reset while its handler ran: no callback would ever free a body attached now */ + } nghttp2_nv nv[IH2_MAX_HEADERS]; int count = ih2_unpack_headers(headers, headers_len, nv); @@ -516,6 +519,9 @@ int ih2_submit_response(ih2_conn *c, int32_t stream_id, if (c == NULL || c->session == NULL) { return NGHTTP2_ERR_INVALID_STATE; } + if (nghttp2_session_find_stream(c->session, stream_id) == NULL) { + return 0; /* reset while its handler ran: no callback would ever free a body attached now */ + } nghttp2_nv nv[IH2_MAX_HEADERS]; int count = ih2_unpack_headers(headers, headers_len, nv); diff --git a/src/protocols/ioxide.nghttp2/runtimes/linux-arm64/native/libioxide_nghttp2.so b/src/protocols/ioxide.nghttp2/runtimes/linux-arm64/native/libioxide_nghttp2.so index c89102ff143b4407660d15f5e369b3d0cd7911e2..3f77919e124506983193f9b74627ac888afd2274 100755 GIT binary patch delta 65306 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 Ts>2$1t^aEPZ;yS=yX^l0(IU(q delta 64902 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 E0Uj%5(*OVf diff --git a/src/protocols/ioxide.nghttp2/runtimes/linux-x64/native/libioxide_nghttp2.so b/src/protocols/ioxide.nghttp2/runtimes/linux-x64/native/libioxide_nghttp2.so index bb65d6b6e5b85f0281cc5f6f2b2299d50807d11b..6c0f6c49c54a23c891866994ee09d800e0491c77 100755 GIT binary patch delta 55246 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 Iz@7L10Jd{G#sB~S diff --git a/tests/Ioxide.Tests.Unit/Nghttp2ResetResponseTests.cs b/tests/Ioxide.Tests.Unit/Nghttp2ResetResponseTests.cs new file mode 100644 index 00000000..ed4c4c96 --- /dev/null +++ b/tests/Ioxide.Tests.Unit/Nghttp2ResetResponseTests.cs @@ -0,0 +1,107 @@ +using System.IO.Pipelines; +using System.Runtime.InteropServices; +using ioxide.nghttp2; + +namespace Ioxide.Tests; + +/// A response given after the peer reset its stream leaves nothing behind in the shim. +internal static class Nghttp2ResetResponseTests +{ + public static void Register(Runner runner) + { + runner.Test("nghttp2: a buffered response to a stream its peer reset while the handler ran is not kept", () => + { + using var client = new StrictClient(); + var connection = new Nghttp2Connection(client); + + TaskCompletionSource? parked = null; + Task run = connection.RunAsync(_ => + { + parked = new TaskCompletionSource(); + return new ValueTask(parked.Task); + }); + var response = new Nghttp2Response { Body = new byte[64 * 1024] }; + + client.SendRequests(); // preface and SETTINGS + client.Drain(); + + const int warm = 20, total = 220; + long before = 0; + for (int i = 0; i < total; i++) + { + int id = 1 + (2 * i); + client.Feed(Get(id)); + client.Drain(); + client.Feed(Http2FlowControlTests.RstStream(id, 8)); // CANCEL, while the handler is parked + client.Drain(); + parked!.SetResult(response); + client.Drain(); + if (i == warm - 1) + { + before = NativeHeapInUse(); + } + } + long grown = NativeHeapInUse() - before; + + client.Close(run); + connection.Dispose(); + Assert.True(grown < 2 * 1024 * 1024, + $"{total - warm} responses of 64 KiB to reset streams left {grown / 1024} KiB on the native heap"); + }); + + runner.Test("nghttp2: a streamed response to a stream reset in the same read as its end hears the peer gone", () => + { + using var client = new StrictClient(); + var connection = new Nghttp2Connection(client); + + var go = new TaskCompletionSource(); + var outcome = new TaskCompletionSource(); + Task run = connection.RunAsync(async (_, writer) => + { + await go.Task; + for (int k = 0; k < 8; k++) // past the 64 KiB a flush may run ahead of nghttp2 + { + writer.GetSpan(16 * 1024)[..(16 * 1024)].Fill((byte)'x'); + writer.Advance(16 * 1024); + } + FlushResult flushed = await writer.FlushAsync(); + outcome.SetResult(flushed.IsCompleted ? "peer gone" : "flushed"); + }); + + client.SendRequests(); + client.Drain(); + client.Feed([.. Get(1), .. Http2FlowControlTests.RstStream(1, 8)]); // its writer is made after the reset + client.Drain(); + go.SetResult(); + client.Drain(); + + Assert.True(outcome.Task.IsCompleted, "the flush of a stream nghttp2 had already closed never returned"); + Assert.Equal("peer gone", outcome.Task.Result); + client.Close(run); + connection.Dispose(); + }); + } + + // A GET with END_STREAM: :scheme http, :path /, and an :authority, which nghttp2 requires. + private static byte[] Get(int streamId) + { + byte[] block = [0x82, 0x86, 0x84, 0x01, 9, .. "a.example"u8.ToArray()]; + return Http2FlowControlTests.FrameBytes(0x1, 0x5, streamId, block); + } + + [StructLayout(LayoutKind.Sequential)] + private struct MallInfo2 + { + public nuint Arena, Ordblks, Smblks, Hblks, Hblkhd, Usmblks, Fsmblks, Uordblks, Fordblks, Keepcost; + } + + [DllImport("libc", EntryPoint = "mallinfo2")] + private static extern MallInfo2 GetMallInfo2(); + + // What malloc has handed out and not had back, which is where the shim keeps a response's body. + private static long NativeHeapInUse() + { + MallInfo2 info = GetMallInfo2(); + return (long)info.Uordblks + (long)info.Hblkhd; + } +} diff --git a/tests/Ioxide.Tests.Unit/Program.cs b/tests/Ioxide.Tests.Unit/Program.cs index fe2963c8..f9d8229c 100644 --- a/tests/Ioxide.Tests.Unit/Program.cs +++ b/tests/Ioxide.Tests.Unit/Program.cs @@ -32,6 +32,7 @@ private static int Main() Http2StreamedBodyTests.Register(runner); Http2FlowControlTests.Register(runner); Http2BufferedCreditTests.Register(runner); + Nghttp2ResetResponseTests.Register(runner); HpackEncodeTests.Register(runner); QpackStaticEncodeTests.Register(runner); AlpnSelectTests.Register(runner); From 561e9d247affd89448f5e926a879bd9fbc9a348c Mon Sep 17 00:00:00 2001 From: Diogo Martins Date: Thu, 5 Nov 2026 20:55:42 +0000 Subject: [PATCH 2/2] nghttp2: a streamed response hears a stream the peer reset at its headers, so a flush with nothing staged reports the peer gone too ih2_submit_response_stream returns NGHTTP2_ERR_STREAM_CLOSED for a gone stream, which only that case can return: a response past the shim's 64 headers returns INVALID_ARGUMENT and still fails the connection. The test proves the connection serves on, and the leak's bound is well clear of what the rest of the process mallocs. --- .../Connection/Nghttp2Connection.Streamed.cs | 10 ++- .../Connection/Nghttp2Connection.cs | 1 + .../Http/Nghttp2ResponseWriter.cs | 4 +- .../ioxide.nghttp2/Interop/Nghttp2.cs | 10 ++- .../native/ioxide_nghttp2_shim.c | 4 +- .../linux-arm64/native/libioxide_nghttp2.so | Bin 301680 -> 301680 bytes .../linux-x64/native/libioxide_nghttp2.so | Bin 261824 -> 261824 bytes .../Nghttp2ResetResponseTests.cs | 70 +++++++++++------- 8 files changed, 62 insertions(+), 37 deletions(-) diff --git a/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.Streamed.cs b/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.Streamed.cs index 48a76f23..a4ffd753 100644 --- a/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.Streamed.cs +++ b/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.Streamed.cs @@ -110,11 +110,12 @@ private Nghttp2ResponseWriter RentWriter(int streamId) } /// Headers of a streamed response - no END_STREAM, the body follows. - internal unsafe void SendStreamedHeaders(int streamId, Nghttp2Response response) + /// False when nghttp2 no longer knows the stream: the peer reset it. + internal unsafe bool SendStreamedHeaders(int streamId, Nghttp2Response response) { if (_handle == 0) { - return; + return true; } byte[] headers = PackHeaders(response, out int headersLength); @@ -126,10 +127,15 @@ internal unsafe void SendStreamedHeaders(int streamId, Nghttp2Response response) result = Nghttp2.ih2_submit_response_stream(_handle, streamId, headerBytes, (nuint)headersLength); } + if (result == ErrStreamClosed) + { + return false; + } if (result != 0) { _failed = true; } + return true; } finally { diff --git a/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.cs b/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.cs index 86d3fa6e..dd402c06 100644 --- a/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.cs +++ b/src/protocols/ioxide.nghttp2/Connection/Nghttp2Connection.cs @@ -45,6 +45,7 @@ public sealed partial class Nghttp2Connection : IDisposable // RFC 9113 ENHANCE_YOUR_CALM: a request body past MaxRequestBytes, as the managed stack resets it. private const uint EnhanceYourCalm = 0xb; private const int ErrInvalidArgument = -501; // NGHTTP2_ERR_INVALID_ARGUMENT + private const int ErrStreamClosed = -510; // NGHTTP2_ERR_STREAM_CLOSED private readonly IDuplexPipe _pipe; private readonly Nghttp2Options _options; diff --git a/src/protocols/ioxide.nghttp2/Http/Nghttp2ResponseWriter.cs b/src/protocols/ioxide.nghttp2/Http/Nghttp2ResponseWriter.cs index b6cd9898..939f843e 100644 --- a/src/protocols/ioxide.nghttp2/Http/Nghttp2ResponseWriter.cs +++ b/src/protocols/ioxide.nghttp2/Http/Nghttp2ResponseWriter.cs @@ -80,9 +80,9 @@ public void WriteHeaders(Nghttp2Response response) private void SendHeaders(Nghttp2Response response) { - if (!_gone) + if (!_gone && !_connection.SendStreamedHeaders(StreamId, response)) { - _connection.SendStreamedHeaders(StreamId, response); + _gone = true; } } diff --git a/src/protocols/ioxide.nghttp2/Interop/Nghttp2.cs b/src/protocols/ioxide.nghttp2/Interop/Nghttp2.cs index b4862e54..4f1a3ad8 100644 --- a/src/protocols/ioxide.nghttp2/Interop/Nghttp2.cs +++ b/src/protocols/ioxide.nghttp2/Interop/Nghttp2.cs @@ -43,17 +43,19 @@ internal struct Callbacks /// Answer the request on . Headers are packed /// [u16 namelen][name][u16 valuelen][value]..., :status first. The body is copied - /// natively and freed on stream close. Returns 0, or a negative nghttp2 error. + /// natively and freed on stream close; for a stream the peer already reset, nothing is kept and + /// the result is still 0. Returns 0, or a negative nghttp2 error. [DllImport(Lib)] internal static extern int ih2_submit_response(nint connection, int streamId, byte* headers, nuint headersLen, byte* body, nuint bodyLen); /// - /// Open a response whose body arrives over time. Headers go out at once; the body follows - /// through until ends it. + /// Open a response whose body arrives over time. Headers are queued for the next drain; the body + /// follows through until ends it. /// /// nghttp2 PULLS: it asks for body bytes when it is ready to frame them, and its read callback /// defers whenever nothing is buffered - which is what holds the stream open through a slow - /// producer rather than ending it early. Returns 0, or a negative nghttp2 error. + /// producer rather than ending it early. Returns 0, NGHTTP2_ERR_STREAM_CLOSED for a stream the peer + /// already reset, or another negative nghttp2 error. /// [DllImport(Lib)] internal static extern int ih2_submit_response_stream(nint connection, int streamId, byte* headers, nuint headersLen); diff --git a/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c b/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c index b8f528f2..43a8e919 100644 --- a/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c +++ b/src/protocols/ioxide.nghttp2/native/ioxide_nghttp2_shim.c @@ -396,7 +396,7 @@ int ih2_submit_response_stream(ih2_conn *c, int32_t stream_id, return NGHTTP2_ERR_INVALID_STATE; } if (nghttp2_session_find_stream(c->session, stream_id) == NULL) { - return 0; /* reset while its handler ran: no callback would ever free a body attached now */ + return NGHTTP2_ERR_STREAM_CLOSED; /* the peer reset it: no callback would ever free a stream attached now */ } nghttp2_nv nv[IH2_MAX_HEADERS]; @@ -520,7 +520,7 @@ int ih2_submit_response(ih2_conn *c, int32_t stream_id, return NGHTTP2_ERR_INVALID_STATE; } if (nghttp2_session_find_stream(c->session, stream_id) == NULL) { - return 0; /* reset while its handler ran: no callback would ever free a body attached now */ + return 0; /* the peer reset it: no callback would ever free a body attached now, and an error fails the connection */ } nghttp2_nv nv[IH2_MAX_HEADERS]; diff --git a/src/protocols/ioxide.nghttp2/runtimes/linux-arm64/native/libioxide_nghttp2.so b/src/protocols/ioxide.nghttp2/runtimes/linux-arm64/native/libioxide_nghttp2.so index 3f77919e124506983193f9b74627ac888afd2274..3edead3563765b96af03abc8a11f2a30647f1616 100755 GIT binary patch delta 53528 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

8Sat6xDctaqI=Qtl2G4e;B}7 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

tAfuYXr|j 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 delta 53603 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 z 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 W<0!IkbxjPYxB4}Fyn*bitp5S96$3>8 diff --git a/src/protocols/ioxide.nghttp2/runtimes/linux-x64/native/libioxide_nghttp2.so b/src/protocols/ioxide.nghttp2/runtimes/linux-x64/native/libioxide_nghttp2.so index 6c0f6c49c54a23c891866994ee09d800e0491c77..81473db196898986dcb32e5f77380f086122bef0 100755 GIT binary patch delta 332 zcmX@`m;bOg4IqZksg?nN~#nWnf_N z==|%^ZST?gpTFfDkn7m_#iR4GXXm*WE${yS_h>!9-*OKq?9-d0BH+<^->37NPv@%_ z6~F%f?>yXkpdxag1yFWBBanFU_&rp^&dK#R4I)qe0dhNCR5)JPzl5kR)%56YQIX(c zU`X-MW>M7uYAQ|eXgs0-6zRMX9qSn580#2!m|xz3!K2sJ!J|9Z!K3wUDgWye6FfR! z0J#i6ZprS+Jh$XkXYc;`_y7ObQ+6}`15&*&HopG-vtq-b6k7|&U_k9*qPJA4$+b92L P;+@6lwteADX8BYAu?UUn delta 332 zcmX@`m;b{<*BO?4T0FVtmo-OX(YeiUm~8YIoi}S5GOY+FxrNb%5SQPluyD~AVpg>lou0>lk-9jbGjc=&D{<2aoPt2andbrTnjt zP4MV^0pv0Oxg|R%^W2hGoyjlnz_9!0-~az#_r2Ki`v3pk)j&I6H>IWN@yoXW&1PUo zo6sC^t3BWr + foreach (int staged in new[] { 128 * 1024, 0 }) { - using var client = new StrictClient(); - var connection = new Nghttp2Connection(client); - - var go = new TaskCompletionSource(); - var outcome = new TaskCompletionSource(); - Task run = connection.RunAsync(async (_, writer) => + int bytes = staged; + runner.Test($"nghttp2: a streamed response to a stream reset in the same read as its end hears the peer gone at a flush of {bytes} B", () => { - await go.Task; - for (int k = 0; k < 8; k++) // past the 64 KiB a flush may run ahead of nghttp2 + using var client = new StrictClient(); + var connection = new Nghttp2Connection(client); + + var go = new TaskCompletionSource(); + var outcome = new TaskCompletionSource(); + bool servedNext = false; + Task run = connection.RunAsync(async (request, writer) => { - writer.GetSpan(16 * 1024)[..(16 * 1024)].Fill((byte)'x'); - writer.Advance(16 * 1024); - } - FlushResult flushed = await writer.FlushAsync(); - outcome.SetResult(flushed.IsCompleted ? "peer gone" : "flushed"); - }); + if (request.StreamId != 1) + { + servedNext = true; + return; + } - client.SendRequests(); - client.Drain(); - client.Feed([.. Get(1), .. Http2FlowControlTests.RstStream(1, 8)]); // its writer is made after the reset - client.Drain(); - go.SetResult(); - client.Drain(); + await go.Task; + if (bytes > 0) // past the 64 KiB a flush may run ahead of nghttp2 + { + writer.GetSpan(bytes)[..bytes].Fill((byte)'x'); + writer.Advance(bytes); + } + FlushResult flushed = await writer.FlushAsync(); + outcome.SetResult(flushed.IsCompleted ? "peer gone" : "flushed"); + }); - Assert.True(outcome.Task.IsCompleted, "the flush of a stream nghttp2 had already closed never returned"); - Assert.Equal("peer gone", outcome.Task.Result); - client.Close(run); - connection.Dispose(); - }); + client.SendRequests(); + client.Drain(); + client.Feed([.. Get(1), .. Http2FlowControlTests.RstStream(1, 8)]); // its writer is made after the reset + client.Drain(); + go.SetResult(); + client.Drain(); + + Assert.True(outcome.Task.IsCompleted, "the flush of a stream nghttp2 had already closed never returned"); + Assert.Equal("peer gone", outcome.Task.Result); + + Assert.True(!connection.IsBroken, "one stream's reset failed the connection"); // the loop only sees that after its next read + client.Feed(Get(3)); + client.Drain(); + Assert.True(servedNext, "the connection served nothing after the reset"); + client.Close(run); + connection.Dispose(); + }); + } } // A GET with END_STREAM: :scheme http, :path /, and an :authority, which nghttp2 requires.