diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlException.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlException.cs index cdf114b3adab..67da37e89dc1 100644 --- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlException.cs +++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlException.cs @@ -13,6 +13,11 @@ internal CurlException(int error, string message) : base(message) HResult = error; } + internal CurlException(int error, Exception innerException) : base(GetCurlErrorString(error, isMulti:false), innerException) + { + HResult = error; + } + internal CurlException(int error, bool isMulti) : this(error, GetCurlErrorString(error, isMulti)) { } diff --git a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs index 0d4930f1df9b..d66abc7b046f 100644 --- a/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs +++ b/src/System.Net.Http/src/System/Net/Http/Unix/CurlHandler.SslProvider.cs @@ -266,7 +266,7 @@ private static int VerifyCertChain(IntPtr storeCtxPtr, IntPtr curlPtr) catch (Exception exc) { EventSourceTrace("Unexpected exception: {0}", exc, easy: easy); - easy.FailRequest(exc); + easy.FailRequest(CreateHttpRequestException(new CurlException((int)CURLcode.CURLE_ABORTED_BY_CALLBACK, exc))); return FailureResult; } finally diff --git a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs index 8593c5b08076..2428d74ce7f9 100644 --- a/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs +++ b/src/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.ServerCertificates.cs @@ -162,6 +162,7 @@ public async Task UseCallback_CallbackReturnsFailure_ThrowsException() } } + [ActiveIssue(21904)] [OuterLoop] // TODO: Issue #11345 [Fact] public async Task UseCallback_CallbackThrowsException_ExceptionPropagates()