-
Notifications
You must be signed in to change notification settings - Fork 237
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
Creating an easy handle polls file system every time for OpenSSL #362
Comments
Oh dear I think that function is intended to only be called once, it definitely shouldn't need to be called each time! |
sagebind
added a commit
that referenced
this issue
Oct 29, 2020
sagebind
added a commit
that referenced
this issue
Oct 29, 2020
sagebind
added a commit
that referenced
this issue
Oct 30, 2020
This was referenced Mar 15, 2021
bors
referenced
this issue
in rust-lang/rust-semverver
Mar 15, 2021
Bump curl from 0.4.34 to 0.4.35 Bumps [curl](https://github.com/alexcrichton/curl-rust) from 0.4.34 to 0.4.35. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/alexcrichton/curl-rust/releases">curl's releases</a>.</em></p> <blockquote> <h2>0.4.35</h2> <h2>Added</h2> <ul> <li>Add some more fields to <code>Debug</code> for <code>Version</code> (<a href="https://github.com/alexcrichton/curl-rust/issues/368">#368</a>)</li> <li>Add <code>expect_100_timeout</code> option to mirror <a href="https://curl.se/libcurl/c/CURLOPT_EXPECT_100_TIMEOUT_MS.html"><code>CURLOPT_EXPECT_100_TIMEOUT_MS</code></a> (<a href="https://github.com/alexcrichton/curl-rust/issues/376">#376</a>)</li> <li>Add feature-gated support for <code>curl_easy_upkeep</code>, introduced in 7.62.0. Use the <code>upkeep_7_62_0</code> feature to enable this method. (<a href="https://github.com/alexcrichton/curl-rust/issues/378">#378</a>)</li> </ul> <h2>Fixed</h2> <ul> <li>Probe for OpenSSL certificates only once (<a href="https://github.com/alexcrichton/curl-rust/issues/362">#362</a>, <a href="https://github.com/alexcrichton/curl-rust/issues/363">#363</a>)</li> <li>Upgrade socket2 dependency to a version not making invalid assumptions about the memory layout of <code>std::net::SocketAddr</code>. (<a href="https://github.com/alexcrichton/curl-rust/issues/365">#365</a>)</li> <li>Fix debug formatting for <code>Events</code> struct (<a href="https://github.com/alexcrichton/curl-rust/issues/377">#377</a>)</li> <li>Fix <code>tcp_nodelay</code> not working for static builds on Unix (<a href="https://github.com/alexcrichton/curl-rust/issues/379">#379</a>, <a href="https://github.com/alexcrichton/curl-rust/issues/381">#381</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/alexcrichton/curl-rust/commit/e220da3c650ae6ea55c08591f36ead6d4a94f97e"><code>e220da3</code></a> Add support for zlib-ng (<a href="https://github.com/alexcrichton/curl-rust/issues/351">#351</a>)</li> <li>See full diff in <a href="https://github.com/alexcrichton/curl-rust/compare/curl-sys-0.4.34...curl-sys-0.4.35">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=curl&package-manager=cargo&previous-version=0.4.34&new-version=0.4.35)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - ``@dependabot` rebase` will rebase this PR - ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it - ``@dependabot` merge` will merge this PR after your CI passes on it - ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it - ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging - ``@dependabot` reopen` will reopen this PR if it is closed - ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually </details>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
While doing some profiling of Isahc to see if I could squeeze any more performance out of it, I noticed that creating new easy handles was spending a noticeable amount of time in
openssl_probe::probe
. Not an egregious amount of time, mind you, but enough to be noticeable. Digging deeper I saw that this function allocates a fair number ofPathBuf
s and makesstd::fs::metadata
calls to look for certificate files.It is probably unlikely for these files to be changed at runtime, and if they do, I don't think most people would expect a running program to immediately pick up the change. Therefore I suggest that we lazily probe for certs just once, and re-use the results for subsequent easy handles created. Or at the very least, allow the user to opt-out of scanning for certs for every easy handle created.
The text was updated successfully, but these errors were encountered: