fix(build): repair the rcgen 0.14 break and pin the TLS provider - #137
Open
rsantacroce wants to merge 1 commit into
Open
fix(build): repair the rcgen 0.14 break and pin the TLS provider#137rsantacroce wants to merge 1 commit into
rsantacroce wants to merge 1 commit into
Conversation
Two separate reasons `main` does not currently produce a node that runs. **`lib` does not compile.** The rcgen 0.13 -> 0.14 bump (#128) renamed `CertifiedKey::key_pair` to `signing_key`, and nothing caught it: the check-lint job runs clippy before the build, and clippy has been failing on every recent run for an unrelated nightly regression, so the compile error merged behind a job that was already red. **The node panics at startup under some build commands.** `configure_server` and `configure_client` build their rustls configs from the process-level provider. `lib` asks for `ring` and nothing here wants anything else, but Cargo unifies features across a build: `--all-targets` also compiles `integration_tests`, whose chain (`bip300301_enforcer_lib` -> `bdk_electrum` -> `electrum-client`) turns on `aws-lc-rs`. rustls then sees two providers, refuses to guess, and panics on the first config built. That first config is `make_server_endpoint`, so the symptom is a workspace that builds without a warning and a node that dies on startup with "Could not automatically determine the process-level CryptoProvider" — depending on which cargo command produced the binary. `cargo build` is fine, `cargo build --all-targets` is not, which is a memorable afternoon. `install_default_crypto_provider` chooses explicitly, and `main` calls it first thing, so the binary no longer depends on who else is in the build graph. `tls_configs_build_once_a_provider_is_installed` pins it: remove the call and it reproduces the panic exactly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mrg9zkV9bEdAvVEjx1RKLx
This was referenced Aug 30, 2026
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
maindoes not currently produce a node that runs, for two unrelated reasons.1.
libdoes not compileThe rcgen 0.13 → 0.14 bump (#128) renamed
CertifiedKey::key_pairtosigning_key, andlib/net/mod.rsstill used the old name:Nothing caught it because the
check-lintjob runs clippy beforecargo check, and clippy has been failing on every recent run for an unrelated nightly regression. The compile error merged behind a job that was already red.2. The node panics at startup, depending on how you built it
configure_serverandconfigure_clientbuild their rustls configs from the process-level provider.libasks forringand nothing here wants anything else — but Cargo unifies features across a build, and--all-targetsalso compilesintegration_tests, whose chain (bip300301_enforcer_lib→bdk_electrum→electrum-client) turns onaws-lc-rs. rustls then sees two providers, refuses to guess, and panics on the first config built.That first config is
make_server_endpoint, so the symptom is a workspace that builds without a warning and a node that dies on startup:cargo buildis fine.cargo build --all-targetsis not. That difference is a memorable afternoon, and it also makes the integration suite fail 10/10 if you build that way first.The fix
coinshift::install_default_crypto_provider()chooses explicitly, andmaincalls it first thing, so the binary no longer depends on who else is in the build graph.Verification
cargo build --workspace --all-targets— cleancargo fmt --all --check,cargo clippy --workspace --all-targets— cleanswap_creation_open_fillfails onmaintoo, before these changes — see the issue filed separately.tls_configs_build_once_a_provider_is_installedpins the second fix: remove theinstall_default_crypto_provider()call and it reproduces the panic exactly.🤖 Generated with Claude Code
https://claude.ai/code/session_01Mrg9zkV9bEdAvVEjx1RKLx