Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bring HttpClient from CoreFX. #7346

Merged
merged 6 commits into from
Nov 6, 2019
Merged

Commits on Oct 31, 2019

  1. Bring HttpClient from CoreFX.

    This bumps Mono to use mono/mono#17645 (which is the 2019-10 backport
    of mono/mono#17628).
    
    The big user-visible change is in regards to certificate validation, everything below are just
    some minor adjustments to tests.
    
    ## SocketsHttpHandler
    
    CoreFX uses a completely new `HttpClientHandler` implementation called `SocketsHttpHandler`,
    which you can find at https://github.com/dotnet/corefx/tree/release/3.0/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler.
    
    Since this is not based on the web stack anymore, it does not use any of the related APIs such
    as `ServicePointManager` or `WebException`.
    
    ## Certificate Validation Changes
    
    There is a new API called `HttpClientHandler.ServerCertificateCustomValidationCallback`.
    - https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler.servercertificatecustomvalidationcallback?view=netframework-4.8
    - https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Unix.cs#L154
    - https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Windows.cs#L383
    
    The `ServicePointManager.ServerCertificateValidationCallback` is no longer invoked and on
    certificate validation failure, `AuthenticationException` (from `System.Security.Authentication`)
    is thrown instead of `WebException`.
    
    At the moment, the `NSUrlSessionHandler` still uses it's own validation callback and also still
    throws `WebException` on failure; we should probably look into making this consistent with the
    other handlers.
    
    ## Minor adjustments related to internal Mono APIs
    
    * `HttpContent.SerializeToStreamAsync()` is now `protected` (changed from `protected internal`).
      - src/Foundation/NSUrlSessionHandler.cs: changed overload accordingly.
      - src/System.Net.Http/CFContentStream.cs: likewise.
    
    * `HttpHeaders.GetKnownHeaderKind()` is an internal Mono API.
       There is a new internal API called `System.Net.Http.PlatformHelper.IsContentHeader(key)`
       which exists in both the old as well as the new implementation.
       The correct way of doing it with the CoreFX handler is
       `HeaderDescriptor.TryGet (key, out var descriptor) && descriptor.HeaderType == HttpHeaderType.Content`
    
    ## Minor adjustments to tests.
    
    * `HttpClientHandler.MaxRequestContentBufferSize` is now longer supported, you can set it to
      any non-negative value, the getter will always return 0.
      See https://github.com/dotnet/corefx/blob/c1778515a3bee34cc09c757b5563d0af0c8b1e99/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.Core.cs#L18.
      - tests/linker/ios/link sdk/HttpClientHandlerTest.cs: removed assertion from test.
    
    * `HttpMessageInvoker.handler` is a `protected private` field - in the CoreFX handler, it is
      called `_handler` and `private`.  This is accessed via reflection by some of the tests, which are
      now using the new name.
      - tests/mmptest/src/MMPTest.cs: here
      - tests/mtouch/MTouch.cs: here
    
    * tests/monotouch-test/System.Net.Http/MessageHandlers.cs:
      Adjust `RejectSslCertificatesServicePointManager` to reflect the certificate validation
      changes described above.
      - FIXME: There was an `Assert.Ignore()` related to `NSUrlSessionHandler` and macOS 10.10;
        I removed that to reenable the test because the description linked to an old issue in
        the private repo that was referenced by several "Merged" PR's, so it looked to me that
        this might have already been fixed - and I also didn't see why it would fail there.
    Martin Baulig committed Oct 31, 2019
    1 Configuration menu
    Copy the full SHA
    d2c0b9c View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2019

  1. Configuration menu
    Copy the full SHA
    a2c00dd View commit details
    Browse the repository at this point in the history
  2. Add ENABLE_IOS=1 and ENABLE_MAC=1.

    Martin Baulig committed Nov 1, 2019
    Configuration menu
    Copy the full SHA
    80512c4 View commit details
    Browse the repository at this point in the history

Commits on Nov 5, 2019

  1. Added switch to disable packaged mono build

    Steve Pfister committed Nov 5, 2019
    Configuration menu
    Copy the full SHA
    065afaa View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5dc730f View commit details
    Browse the repository at this point in the history

Commits on Nov 6, 2019

  1. 1 Configuration menu
    Copy the full SHA
    f874778 View commit details
    Browse the repository at this point in the history