)]}'
{
  "commit": "5a920b1a80900b1da0d73d18b73c193f7b52b901",
  "tree": "c7756bb4f0d828e2fa8c04a88361eafa8b35b7d8",
  "parents": [
    "7fd284277aab94a6bd16c6a50b7604958f7a18a1"
  ],
  "author": {
    "name": "Damien Neil",
    "email": "dneil@google.com",
    "time": "Wed Jul 15 14:02:55 2026 -0700"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Thu Jul 23 13:43:03 2026 -0700"
  },
  "message": "http3: rework registration to allow using a fake network\n\nThis is the x/net half of a paired set of changes which modify\nthe mechanism by which x/net/http3 integrates with net/http.\nThe other half of the change is CL 803380.\n\nx/net/http3 exports two functions via linkname for use by\nnet/http\u0027s tests. These are now:\n\n\tregisterServer(*http.Server, opts any) error\n\tregisterTransport(*http.Transport, opts any) error\n\nThese are now thin wrappers around the interal/http3 registration\nfunctions, with a bit of reflection-based struct copying to permit\npassing in options without exporting the options types.\n\n(The end state is for these functions to be exported and take\nexported options types.)\n\nServer registration no longer uses TLSNextProto.\nInstead, the HTTP/3 server registers itself via net/http.Server.Serve,\nwhich is the same approach used by x/net/http2.\nThis gives us a simpler link between the two packages.\nFor example, net/http can just call a Shutdown method on the HTTP/3 server\nand pass it a Context, rather than the prior complex dance.\n\nThe HTTP/3 server no longer calls net.Listen.\nIt always accepts a net.PacketConn from net/http.\n\nTransportOpts now has a ListenPacket field, in addition to ListenQUIC.\n\nServer and Transport now both accept their *tls.Configs from net/http.\nnet/http is responsible for correctly configuring NextProtos.\nThis makes TLS config construction more consistent overall,\nsince net/http already sets up the HTTP/1 and HTTP/2 configs.\n\nThese changes simplify the registration machinery in some places,\nbut mainly permit us to now pass a fake net.PacketConn from\nnet/http\u0027s tests into the http package.\n\nAs part of this change, the HTTP/3 server\u0027s handler and base context\nare now per-endpoint rather than per-server.\n\nnet/http Servers permit setting a per-net.Listener base context\nfor request handlers. Treating the HTTP/3 base context as per-endpoint\nmaintains the equivalent ability. Making the handler per-endpoint\nisn\u0027t strictly necessary, but is consistent with the context and\nsimplifies the connection between net/http and x/net/http3.\n\nFor golang/go#80480\n\nChange-Id: I10d6e998c11cade33e517d1d2f03a2d86a6a6964\nReviewed-on: https://go-review.googlesource.com/c/net/+/801940\nReviewed-by: Nicholas Husin \u003chusin@google.com\u003e\nReviewed-by: Nicholas Husin \u003cnsh@golang.org\u003e\nAuto-Submit: Damien Neil \u003cdneil@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3592668f848389b7cc3d742473d28b6224965bdf",
      "old_mode": 33188,
      "old_path": "http3/http3.go",
      "new_id": "ff5ef01a665d17c80756f822718091deb38d2a74",
      "new_mode": 33188,
      "new_path": "http3/http3.go"
    },
    {
      "type": "modify",
      "old_id": "1944fd6d1766bc4f992ac19e8b98c5c7a91dfa33",
      "old_mode": 33188,
      "old_path": "internal/http3/nethttp_test.go",
      "new_id": "fa6e3dee979dbf1768b26473f885528450ac142e",
      "new_mode": 33188,
      "new_path": "internal/http3/nethttp_test.go"
    },
    {
      "type": "modify",
      "old_id": "4f1cca179ed8e5598d55d1922fc6cef3aa98cc9b",
      "old_mode": 33188,
      "old_path": "internal/http3/quic.go",
      "new_id": "68f2d5f2c02d1006021d54f6eb5f563df847991f",
      "new_mode": 33188,
      "new_path": "internal/http3/quic.go"
    },
    {
      "type": "modify",
      "old_id": "ef7d9a457e6eb4516452606c4ba5e3ed6688334b",
      "old_mode": 33188,
      "old_path": "internal/http3/server.go",
      "new_id": "43ab277ba51e6abc29f558c33c6cb82949a3eeb8",
      "new_mode": 33188,
      "new_path": "internal/http3/server.go"
    },
    {
      "type": "modify",
      "old_id": "0e9c97332536b1786456f1ae2f8ff9f175a9a083",
      "old_mode": 33188,
      "old_path": "internal/http3/server_test.go",
      "new_id": "47b7173144d1ac2b3660f1c7108e857d9f108b6f",
      "new_mode": 33188,
      "new_path": "internal/http3/server_test.go"
    },
    {
      "type": "modify",
      "old_id": "16daa24ed6e56cfd1087d2a050d22211ab4510c3",
      "old_mode": 33188,
      "old_path": "internal/http3/transport.go",
      "new_id": "b1c56c8a8b0148f66551c373329eba51fb7e6c07",
      "new_mode": 33188,
      "new_path": "internal/http3/transport.go"
    },
    {
      "type": "modify",
      "old_id": "7d35525d35e156701ec3c4f4c5af8aa98411b934",
      "old_mode": 33188,
      "old_path": "internal/http3/transport_test.go",
      "new_id": "071f9365496c0c3d7c17a45a3ad822812132fc1e",
      "new_mode": 33188,
      "new_path": "internal/http3/transport_test.go"
    }
  ]
}
