Skip to content

Add workaround also for CURL 7.79.0. #15532

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/cargo/util/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3131,7 +3131,7 @@ fn disables_multiplexing_for_bad_curl(
use crate::util::network;

if network::proxy::http_proxy_exists(http, gctx) && http.multiplexing.is_none() {
let bad_curl_versions = ["7.87.0", "7.88.0", "7.88.1"];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix!

Could you expand the commend a bit about what versions are bad on which platform?

And have we identified the root case about why 7.79.0 is bad? It would be ideal if it also mentioned in the comment like what we did for macOS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have exact root cause. I can just guess that it's the same (proxy is involved). Latest Solaris CBE release 11.4.81 has newer CURL 8.12.0 and there are no problems. Sooner or later vmactions/solaris-vm will start to use it anyway...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that version of Solaris build Cargo from scratch and not vendoring OpenSSL?
The official toolchain from rust-lang/rust, and the default dist build logic favors vendored-openssl. Also, why only 7.79.0, but not 7.80.0 or any other versions?

If Solaris image also vendored OpenSSL, then this might be a red herring.


I don't want to like blocking the workaround for a perfect investigation, though we also don't want to downgrade people's crate download experience. We've spent an amount of time on the topic to eventually came out with this workaroud. To be on the same standard we might want to dig into this one bit more. See the previous efforts:

Look around these linked issues, some other projects also replicate our fix. We might want to be a bit more cautious on this. Or the fix could be conditioned on Solaris, if that sounds right?

let bad_curl_versions = ["7.79.0", "7.87.0", "7.88.0", "7.88.1"];
if bad_curl_versions
.iter()
.any(|v| curl_version.starts_with(v))
Expand Down