Implement Header encoding selectors on SocketsHttpHandler (#39468)
authorMiha Zupan <mihazupan.zupan1@gmail.com>
Thu, 30 Jul 2020 08:36:38 +0000 (10:36 +0200)
committerGitHub <noreply@github.com>
Thu, 30 Jul 2020 08:36:38 +0000 (10:36 +0200)
commit02e872ef3cf48c7fbdccc10bd52386c28b7a8676
tree609863ce59c53b504ec412eb2d5bb476a40ceebf
parentc205ed0d0d170ced4e12fb60e0c2c2dc6f8df095
Implement Header encoding selectors on SocketsHttpHandler (#39468)

* Expose HeaderEncodingSelectors on SocketsHttpHandler

* Implement header encoding selectors in SocketsHttpHandler

* Add header encoding tests

* Add summaries for new APIs

* Use Stream.Write(byte[], int, int) overloads for framework compat

* Add dummy API implementation to browser target

* HPack/QPack fixes

* Move HeaderEncodingSelector delegate to namespace, add TContext

* Encoding fixes

* Remove unused using

* Simplify test

* HttpConnection PR feedback

* Simplify fast-path detection
25 files changed:
src/libraries/Common/src/System/Net/Http/aspnetcore/Http2/Hpack/HPackEncoder.cs
src/libraries/Common/src/System/Net/Http/aspnetcore/Http3/QPack/QPackEncoder.cs
src/libraries/Common/tests/System/Net/Http/GenericLoopbackServer.cs
src/libraries/Common/tests/System/Net/Http/HPackEncoder.cs
src/libraries/Common/tests/System/Net/Http/Http2LoopbackConnection.cs
src/libraries/Common/tests/System/Net/Http/Http3LoopbackStream.cs
src/libraries/Common/tests/System/Net/Http/LoopbackServer.cs
src/libraries/Common/tests/System/Net/Http/QPackTestEncoder.cs
src/libraries/System.Net.Http/ref/System.Net.Http.cs
src/libraries/System.Net.Http/src/System.Net.Http.csproj
src/libraries/System.Net.Http/src/System/Net/Http/BrowserHttpHandler/SocketsHttpHandler.cs
src/libraries/System.Net.Http/src/System/Net/Http/HeaderEncodingSelector.cs [new file with mode: 0644]
src/libraries/System.Net.Http/src/System/Net/Http/Headers/HeaderDescriptor.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Connection.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Stream.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http3RequestStream.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionBase.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionSettings.cs
src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/SocketsHttpHandler.cs
src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs
src/libraries/System.Net.Http/tests/UnitTests/HPack/HPackRoundtripTests.cs
src/libraries/System.Net.Http/tests/UnitTests/Headers/HeaderEncodingTest.cs [new file with mode: 0644]
src/libraries/System.Net.Http/tests/UnitTests/Headers/KnownHeadersTest.cs
src/libraries/System.Net.Http/tests/UnitTests/System.Net.Http.Unit.Tests.csproj