use-rustls-ring transitively enables rustls/default (aws-lc-rs), breaking ring-only builds

Abierto Apto para principiantes
#219 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@EddieHouston ya está trabajando en esto.

Desde el 2/7/2026.

  • #220 de @EddieHouston — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
rust
Área
build-system

Línea de trabajo

Comienza con las definiciones de features de Cargo para rustls-ring y rustls que se muestran en el issue; después, ejecuta cargo tree -e features para confirmar la cadena de features actual. Actualiza las referencias a los features opcionales de rustls para que use-rustls-ring no habilite rustls/default y verifica que las compilaciones ring-only ya no incluyan aws-lc-rs.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

In 0.25.0 the rustls-ring feature is defined as:

rustls-ring = [
    "webpki-roots",
    "dep:rustls",
    "rustls/ring",
    "rustls/logging",
    "rustls/std",
    "rustls/tls12",
]

The "rustls/ring" entries (without ?) also activate the crate's explicit rustls feature:

rustls = [
    "webpki-roots",
    "dep:rustls",
    "rustls/default",
]

which enables rustls/default, i.e. the aws-lc-rs provider. So a downstream crate asking for use-rustls-ring (expecting ring only) ends up with both ring and aws-lc-rs enabled on rustls. cargo tree -e features shows the chain:

electrum-client feature "rustls"
  └── electrum-client feature "rustls-ring"
      └── electrum-client feature "use-rustls-ring"

Consequences downstream: rustls can no longer auto-select a process-level CryptoProvider, so any other crate in the same binary that relies on the process default panics on first TLS use with:

Could not automatically determine the process-level CryptoProvider from Rustls crate features.

(electrum-client itself is unaffected since it selects its provider explicitly.) We hit this in a project after bumping electrum-client 0.21 -> 0.25: the shared rustls went from ring only to ring + aws-lc-rs + default, and an unrelated tokio-tungstenite connection in the same binary started panicking.

Suggested fix

Use the ? syntax so rustls-ring does not activate the rustls feature:

rustls-ring = [
    "webpki-roots",
    "dep:rustls",
    "rustls?/ring",
    "rustls?/logging",
    "rustls?/std",
    "rustls?/tls12",
]

(0.21 did not have this problem; the regression came with the feature reshuffle in later releases.)

Lenguaje dominante
Rust
Estrellas
89
Forks
87
Merge medio
1 h 25 min
PR fusionados (30 d)
4

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bitcoindevkit/rust-electrum-client

Todos los issues de bitcoindevkit/rust-electrum-client

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.