Skip to content

[Feat]: Use rustls-tls instead of native-tls for reqwest #45

@Vensence

Description

@Vensence

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

The workspace Cargo.toml declares reqwest without default-features = false:

reqwest = { version = "0.12", features = ["json", "stream"] }

This pulls in native-tls → openssl-sys as a transitive dependency. This breaks cross-compilation to musl targets (e.g. x86_64-unknown-linux-musl) and any environment without OpenSSL development headers
installed.

Suggested fix

reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }

Or alternatively, expose TLS backend selection via feature flags:

[features]
default = ["rustls-tls"]
native-tls = ["reqwest/native-tls"]
rustls-tls = ["reqwest/rustls-tls"]

Reproduction

Any downstream crate that depends on agntcy-a2a-client will transitively pull in openssl-sys, even if the downstream crate explicitly uses default-features = false on its own reqwest dependency. Cargo
feature unification merges the features at the binary level, so there is no way for downstream consumers to opt out of native-tls.

cargo tree -i native-tls

native-tls v0.2.18
├── hyper-tls v0.6.0
│   └── reqwest v0.12.28
│       └── agntcy-a2a-client

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

### Code of Conduct

- [x] I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions