You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This call site is reachable on: 'freebsd'. 'HttpConnectionPool.TrySendUsingHttp3Async(HttpRequestMessage, CancellationToken)' is only supported on: 'linux', 'macOS/OSX', 'windows'.
The HttpConnectionPool.TrySendUsingHttp3Async(HttpRequestMessage, CancellationToken) was guarded with IsHttp3Supported(), but that not working anymore. I was not able to repro with a simpler code, so pasted the runtime code below, removed parts that not affecting the code analysis (like code in catch blocks etc, the full code could be found here). The warning disappears if remove the finally or 2 of the 3 catch blocks.
publicasyncValueTask<HttpResponseMessage>SendWithVersionDetectionAndRetryAsync(HttpRequestMessagerequest,boolasync,booldoRequestAuth,CancellationTokencancellationToken){while(true){HttpConnectionWaiter<Http2Connection?>?http2ConnectionWaiter=null;try{HttpResponseMessage?response=null;if(IsHttp3Supported()&&// guard to enable trimming HTTP/3 support_http3Enabled&&(request.Version.Major >= 3||(request.VersionPolicy == HttpVersionPolicy.RequestVersionOrHigher &&IsSecure))&&!request.IsExtendedConnectRequest){if(_sslOptionsHttp3==null){// deferred creation. We use atomic exchange to be sure all threads point to single object to mimic ctor behavior.SslClientAuthenticationOptionssslOptionsHttp3= ConstructSslOptions(_poolManager,_sslOptionsHttp11!.TargetHost!);
sslOptionsHttp3.ApplicationProtocols =s_http3ApplicationProtocols;
Interlocked.CompareExchange(ref _sslOptionsHttp3, sslOptionsHttp3,null);}response=await TrySendUsingHttp3Async(request, cancellationToken).ConfigureAwait(false);}returnresponse!;}catch(HttpRequestExceptione)when(e.AllowRetry == RequestRetryType.RetryOnConnectionFailure){}catch(HttpRequestExceptione)when(e.AllowRetry == RequestRetryType.RetryOnLowerHttpVersion){}catch(HttpRequestExceptione)when(e.AllowRetry == RequestRetryType.RetryOnStreamLimitReached){}finally{
CancelIfNecessary(http2ConnectionWaiter, cancellationToken.IsCancellationRequested);}}}
A bug fix made with Perform exceptions path analysis for all flow analyses introduced regression in flow analyses and causing failures in runtime repo.
The
HttpConnectionPool.TrySendUsingHttp3Async(HttpRequestMessage, CancellationToken)
was guarded withIsHttp3Supported()
, but that not working anymore. I was not able to repro with a simpler code, so pasted the runtime code below, removed parts that not affecting the code analysis (like code in catch blocks etc, the full code could be found here). The warning disappears if remove the finally or 2 of the 3 catch blocks.Blocking dotnet/runtime#89630.
@mavasani please take a look.
The text was updated successfully, but these errors were encountered: