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
Compile latest libcurl on Windows with SChannel (either static or dynamic library). Then include either static or dynamic libcurl from inside a dll that will be run in another host application. ALPN detection will now sometimes fail depending on whether the host application was compiled with the correctly configured Application Manifest file.
In this scenario we control the dll (which eventually calls libCurl functionality). However, we do not control the "host application". Meaning the functionality we call in curl could work fine or break depending on whether the host application was compiled and packaged correctly.
Also, this is not a hypothetical situation -- we've seen this in the field.
I expected the following
libCurl should work the same regardless of whether the host application has a manifest configured correctly.
curl/libcurl version
7.79.0
operating system
Windows 8.1 or newer.
Why does it fail?
Incorrect Windows Version detection is used. Or, rather, flaky version detection is used. This was a problem of Microsoft's making (they decided to make some version detection functions flaky).
Solution
Use alternative version detection functions that always returns the correct version. I've already tested and made a PR with the solution. See #7727
The text was updated successfully, but these errors were encountered:
- Use RtlVerifyVersionInfo instead of VerifyVersionInfo, when possible.
Later versions of Windows have normal version functions that compare and
return versions based on the way the application is manifested, instead
of the actual version of Windows the application is running on. We
prefer the actual version of Windows so we'll now call the Rtl variant
of version functions (RtlVerifyVersionInfo) which does a proper
comparison of the actual version.
Reported-by: Wyatt O'Day
Ref: curl#7727Fixescurl#7742
Closes #xxxx
I did this
Compile latest libcurl on Windows with SChannel (either static or dynamic library). Then include either static or dynamic libcurl from inside a dll that will be run in another host application. ALPN detection will now sometimes fail depending on whether the host application was compiled with the correctly configured Application Manifest file.
In this scenario we control the dll (which eventually calls libCurl functionality). However, we do not control the "host application". Meaning the functionality we call in curl could work fine or break depending on whether the host application was compiled and packaged correctly.
Also, this is not a hypothetical situation -- we've seen this in the field.
I expected the following
libCurl should work the same regardless of whether the host application has a manifest configured correctly.
curl/libcurl version
7.79.0
operating system
Windows 8.1 or newer.
Why does it fail?
Incorrect Windows Version detection is used. Or, rather, flaky version detection is used. This was a problem of Microsoft's making (they decided to make some version detection functions flaky).
Solution
Use alternative version detection functions that always returns the correct version. I've already tested and made a PR with the solution. See #7727
The text was updated successfully, but these errors were encountered: