From 9d1ab3183b0845891388cd687736b4c918ea1537 Mon Sep 17 00:00:00 2001 From: Diogo Martins Date: Thu, 5 Nov 2026 22:36:56 +0000 Subject: [PATCH] nghttp3: a message's fields are no longer capped at 64, so a response with more no longer silently loses the rest The shim packed fields into a fixed array, stopped when it was full and returned what it had as if that were everything. The array is the connection's now and grows as needed. Fixes #506. --- .../native/ioxide_nghttp3_shim.c | 57 +++++++------ .../linux-arm64/native/libioxide_nghttp3.so | Bin 242008 -> 242008 bytes .../linux-x64/native/libioxide_nghttp3.so | Bin 254944 -> 254944 bytes tests/Ioxide.Tests.E2E/Program.cs | 1 + .../Protocols/Nghttp3ManyFieldsTests.cs | 80 ++++++++++++++++++ 5 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 tests/Ioxide.Tests.E2E/Protocols/Nghttp3ManyFieldsTests.cs diff --git a/src/protocols/ioxide.nghttp3/native/ioxide_nghttp3_shim.c b/src/protocols/ioxide.nghttp3/native/ioxide_nghttp3_shim.c index e23d044f..03bc7e5c 100644 --- a/src/protocols/ioxide.nghttp3/native/ioxide_nghttp3_shim.c +++ b/src/protocols/ioxide.nghttp3/native/ioxide_nghttp3_shim.c @@ -67,6 +67,8 @@ typedef struct ih3_conn { ih3_callbacks cbs; void *user; ih3_stream *streams; + nghttp3_nv *nv; /* the fields being submitted; keeps its size */ + size_t nv_cap; } ih3_conn; static ih3_stream *ih3_stream_find(ih3_conn *c, int64_t id) @@ -305,6 +307,7 @@ void ih3_free(ih3_conn *c) ih3_stream_drop(c, c->streams->id); } nghttp3_conn_del(c->conn); + free(c->nv); free(c); } @@ -326,14 +329,23 @@ int64_t ih3_read_stream(ih3_conn *c, int64_t stream_id, const uint8_t *data, siz return (int64_t)rv; } -#define IH3_MAX_NV 64 - /* headers: [u16 namelen][name][u16 valuelen][value] repeated, little-endian u16 (written and read - * on the same host). Returns the entry count, or -1 on a malformed buffer. */ -static int ih3_unpack_headers(const uint8_t *headers, size_t headers_len, nghttp3_nv *nva) + * on the same host). Unpacks into c->nv, which nghttp3 copies out of during submit. Returns the + * entry count, or a negative nghttp3 error. */ +static int ih3_unpack_headers(ih3_conn *c, const uint8_t *headers, size_t headers_len) { size_t nvlen = 0; - for (size_t off = 0; off + 2 <= headers_len && nvlen < IH3_MAX_NV; nvlen++) { + for (size_t off = 0; off + 2 <= headers_len; nvlen++) { + if (nvlen == c->nv_cap) { + size_t cap = c->nv_cap == 0 ? 64 : c->nv_cap * 2; + nghttp3_nv *grown = realloc(c->nv, cap * sizeof(*grown)); + if (grown == NULL) { + return NGHTTP3_ERR_NOMEM; + } + c->nv = grown; + c->nv_cap = cap; + } + uint16_t namelen; memcpy(&namelen, headers + off, 2); off += 2; @@ -341,7 +353,7 @@ static int ih3_unpack_headers(const uint8_t *headers, size_t headers_len, nghttp off += namelen; if (off + 2 > headers_len) { - return -1; + return NGHTTP3_ERR_INVALID_ARGUMENT; } uint16_t valuelen; memcpy(&valuelen, headers + off, 2); @@ -350,14 +362,14 @@ static int ih3_unpack_headers(const uint8_t *headers, size_t headers_len, nghttp off += valuelen; if (off > headers_len) { - return -1; + return NGHTTP3_ERR_INVALID_ARGUMENT; } - nva[nvlen].name = (uint8_t *)name; - nva[nvlen].namelen = namelen; - nva[nvlen].value = (uint8_t *)value; - nva[nvlen].valuelen = valuelen; - nva[nvlen].flags = NGHTTP3_NV_FLAG_NONE; + c->nv[nvlen].name = (uint8_t *)name; + c->nv[nvlen].namelen = namelen; + c->nv[nvlen].value = (uint8_t *)value; + c->nv[nvlen].valuelen = valuelen; + c->nv[nvlen].flags = NGHTTP3_NV_FLAG_NONE; if (off == headers_len) { return (int)(nvlen + 1); @@ -371,10 +383,9 @@ int ih3_submit_response(ih3_conn *c, int64_t stream_id, const uint8_t *headers, size_t headers_len, const uint8_t *body, size_t body_len) { - nghttp3_nv nva[IH3_MAX_NV]; - int nvlen = ih3_unpack_headers(headers, headers_len, nva); + int nvlen = ih3_unpack_headers(c, headers, headers_len); if (nvlen < 0) { - return NGHTTP3_ERR_INVALID_ARGUMENT; + return nvlen; } ih3_stream *s = NULL; @@ -396,7 +407,7 @@ int ih3_submit_response(ih3_conn *c, int64_t stream_id, } nghttp3_data_reader dr = { .read_data = ih3_read_body }; - int rv = nghttp3_conn_submit_response(c->conn, stream_id, nva, (size_t)nvlen, + int rv = nghttp3_conn_submit_response(c->conn, stream_id, c->nv, (size_t)nvlen, body_len > 0 ? &dr : NULL); if (rv != 0 && s != NULL) { ih3_stream_drop(c, stream_id); @@ -410,10 +421,9 @@ int ih3_submit_response(ih3_conn *c, int64_t stream_id, int ih3_submit_response_stream(ih3_conn *c, int64_t stream_id, const uint8_t *headers, size_t headers_len) { - nghttp3_nv nva[IH3_MAX_NV]; - int nvlen = ih3_unpack_headers(headers, headers_len, nva); + int nvlen = ih3_unpack_headers(c, headers, headers_len); if (nvlen < 0) { - return NGHTTP3_ERR_INVALID_ARGUMENT; + return nvlen; } ih3_stream *s = calloc(1, sizeof(*s)); @@ -426,7 +436,7 @@ int ih3_submit_response_stream(ih3_conn *c, int64_t stream_id, c->streams = s; nghttp3_data_reader dr = { .read_data = ih3_read_body_streamed }; - int rv = nghttp3_conn_submit_response(c->conn, stream_id, nva, (size_t)nvlen, &dr); + int rv = nghttp3_conn_submit_response(c->conn, stream_id, c->nv, (size_t)nvlen, &dr); if (rv != 0) { ih3_stream_drop(c, stream_id); } @@ -446,10 +456,9 @@ int ih3_submit_request(ih3_conn *c, int64_t stream_id, const uint8_t *headers, size_t headers_len, const uint8_t *body, size_t body_len) { - nghttp3_nv nva[IH3_MAX_NV]; - int nvlen = ih3_unpack_headers(headers, headers_len, nva); + int nvlen = ih3_unpack_headers(c, headers, headers_len); if (nvlen < 0) { - return NGHTTP3_ERR_INVALID_ARGUMENT; + return nvlen; } ih3_stream *s = NULL; @@ -471,7 +480,7 @@ int ih3_submit_request(ih3_conn *c, int64_t stream_id, } nghttp3_data_reader dr = { .read_data = ih3_read_body }; - int rv = nghttp3_conn_submit_request(c->conn, stream_id, nva, (size_t)nvlen, + int rv = nghttp3_conn_submit_request(c->conn, stream_id, c->nv, (size_t)nvlen, body_len > 0 ? &dr : NULL, NULL); if (rv != 0 && s != NULL) { ih3_stream_drop(c, stream_id); diff --git a/src/protocols/ioxide.nghttp3/runtimes/linux-arm64/native/libioxide_nghttp3.so b/src/protocols/ioxide.nghttp3/runtimes/linux-arm64/native/libioxide_nghttp3.so index a1b0a298736ec8b39d47904893a4ba5602e66557..740073dd13701ac051e7f498412821dc979c9f71 100755 GIT binary patch delta 58236 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 Nw)M!yM{G-M{|(pC%jN(8 diff --git a/src/protocols/ioxide.nghttp3/runtimes/linux-x64/native/libioxide_nghttp3.so b/src/protocols/ioxide.nghttp3/runtimes/linux-x64/native/libioxide_nghttp3.so index cc3af8e5b07a8a28fc35e7e3aca262f5cb604ab8..55aa85479e1b2c4f238d561e3455ea7b8fad00fe 100755 GIT binary patch delta 44858 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 delta 46052 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 E03YDxZU6uP diff --git a/tests/Ioxide.Tests.E2E/Program.cs b/tests/Ioxide.Tests.E2E/Program.cs index e0c353db..6958dce2 100644 --- a/tests/Ioxide.Tests.E2E/Program.cs +++ b/tests/Ioxide.Tests.E2E/Program.cs @@ -56,6 +56,7 @@ private static int Main() H3BodyTruncationTests.Register(runner); H3HeldChunkTests.Register(runner); H3ErrorCodeTests.Register(runner); + Nghttp3ManyFieldsTests.Register(runner); H3CriticalStreamTests.Register(runner); H3AlpnTests.Register(runner); Http2BodyTests.Register(runner); diff --git a/tests/Ioxide.Tests.E2E/Protocols/Nghttp3ManyFieldsTests.cs b/tests/Ioxide.Tests.E2E/Protocols/Nghttp3ManyFieldsTests.cs new file mode 100644 index 00000000..4e82e446 --- /dev/null +++ b/tests/Ioxide.Tests.E2E/Protocols/Nghttp3ManyFieldsTests.cs @@ -0,0 +1,80 @@ +using System.Text; +using ioxide.nghttp3; +using ioxide.ngtcp2; + +namespace Ioxide.Tests; + +/// +/// A message's fields are not capped by the shim: each reaches the peer, however many there are. +/// +internal static class Nghttp3ManyFieldsTests +{ + public static void Register(Runner runner) + { + // 64 and 65 fields with :status are either side of the first growth, and 201 past the second. + foreach (int fields in new[] { 63, 64, 200 }) + { + foreach (bool asStream in new[] { false, true }) + { + int count = fields; + bool streamed = asStream; + runner.Test($"nghttp3: a {(streamed ? "streamed" : "buffered")} response with {count} headers of its own reaches the peer whole", () => + { + var response = new Nghttp3Response { Status = 200 }; + for (int i = 0; i < count; i++) + { + response.Headers.Add(Encoding.ASCII.GetBytes($"x-{i}"), "v"u8.ToArray()); + } + + int udpPort = Start(connection => streamed + ? connection.RunAsync(async (_, writer) => + { + writer.WriteHeaders(response); + await writer.FlushAsync(); + }) + : connection.RunAsync(_ => response)); + + using H3TestClient client = Connect(udpPort); + Assert.Equal(200, client.Get("/", timeoutMs: 5000).Status); + Assert.Equal(count, client.ResponseHeaders.Count(h => h.Name.StartsWith("x-", StringComparison.Ordinal))); + }); + } + } + + runner.Test("nghttp3: a request past 64 fields reaches its handler whole", () => + { + int seen = -1; + var ok = new Nghttp3Response { Status = 200 }; + int udpPort = Start(connection => connection.RunAsync(request => + { + seen = request.Headers.AsSpan().Length; + return ok; + })); + + using H3TestClient client = Connect(udpPort); + (string, string)[] many = [.. Enumerable.Range(0, 70).Select(i => ($"x-{i}", "v"))]; + Assert.Equal(200, client.Request("GET", "/", null, many, timeoutMs: 5000).Status); + Assert.Equal(70, seen); + }); + } + + private static int Start(Func run) + { + (string certPath, string keyPath) = TestCert.Ensure(); + var engine = TestServer.Own(new QuicEngine(certPath, keyPath, cidLength: 8, alpn: ["h3"])); + + (_, int udpPort) = TestServer.StartDatagram( + onDatagram: null, + quicFactory: engine.CreateFactory(), + quicHandle: (_, conn) => run(new Nghttp3Connection(conn))); + return udpPort; + } + + private static H3TestClient Connect(int udpPort) + { + var client = new H3TestClient("127.0.0.1", udpPort); + client.Connect(); + Assert.True(client.CompleteHandshake(timeoutMs: 5000), "handshake did not complete"); + return client; + } +}