Blocking stream and TLS utils for Pimalaya
It opens the streams those clients run on: TCP, TLS and Unix-domain sockets, proxy resolution, and the plain-to-TLS upgrade STARTTLS needs. Anyone building a client on io-imap, io-smtp, io-http or a sibling is a first-class consumer.
Note
The crate stays on 0.x, which means breaking changes land in minor bumps and never in patch bumps. Pin a minor version and read the changelog before upgrading.
- Blocking stream: one handle over a TCP socket, a Unix-domain socket or a TLS session, with the STARTTLS upgrade (requires
stdfeature). - Proxy: tunnel through SOCKS5 or HTTP
CONNECT, resolved from the ambient proxy variables by default (requiresstdfeature). - Retry: a socket reporting it is not ready is retried under a per-stream strategy, instead of ending the exchange (requires
stdfeature). - TLS support:
- Rustls with ring crypto (requires
rustls-ringfeature, enabled by default) - Rustls with aws crypto (requires
rustls-awsfeature) - Native TLS (requires
native-tlsfeature)
- Rustls with ring crypto (requires
Tip
pimalaya-stream is written in Rust and uses cargo features to gate TLS providers. The default feature set is declared in Cargo.toml or on docs.rs.
See documentation at docs.rs.
See complete examples at ./examples.
This project is licensed under either of:
- Chat on Matrix
- News on Mastodon or RSS
- Mail at pimalaya.org@posteo.net
Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:
- 2022 → 2023: NGI Assure
- 2023 → 2024: NGI Zero Entrust
- 2024 → 2026: NGI Zero Core
- 2026 → 2027: NGI Zero Commons Fund
This program is part of Pimalaya, free software funded entirely by grants and donations. If you find it useful, consider sponsoring its development:
