tinyhumansai/openhuman · error

reqwest 0.12 TLS client must be available

Error message

reqwest 0.12 TLS client must be available

What it means

Panic payload on reqwest::blocking::Client::builder().build() in the Sentry HTTP transport: after applying invalid-cert acceptance and HTTP/HTTPS proxy options, the blocking client (reqwest 0.12) failed to construct — typically a TLS backend initialization failure or an unusable proxy configuration. The transport cannot ship events without it, so the process panics at setup.

Source

Thrown at src/core/sentry_transport.rs:45

        let mut builder = reqwest::blocking::Client::builder();
        if options.accept_invalid_certs {
            builder = builder.danger_accept_invalid_certs(true);
        }
        if let Some(url) = options.http_proxy.as_ref() {
            match reqwest::Proxy::http(url.as_ref()) {
                Ok(proxy) => builder = builder.proxy(proxy),
                Err(error) => sentry_debug!("invalid HTTP proxy: {error:?}"),
            }
        }
        if let Some(url) = options.https_proxy.as_ref() {
            match reqwest::Proxy::https(url.as_ref()) {
                Ok(proxy) => builder = builder.proxy(proxy),
                Err(error) => sentry_debug!("invalid HTTPS proxy: {error:?}"),
            }
        }
        let client = builder
            .build()
            .expect("reqwest 0.12 TLS client must be available");
        let dsn = options
            .dsn
            .as_ref()
            .expect("Sentry transport requires a DSN");
        let auth = dsn.to_auth(Some(&options.user_agent)).to_string();
        let url = dsn.envelope_api_url().to_string();
        let (sender, receiver) = mpsc::sync_channel(30);
        let shutdown = Arc::new(AtomicBool::new(false));
        let worker_shutdown = shutdown.clone();

        let handle = std::thread::Builder::new()
            .name("sentry-transport".into())
            .spawn(move || {
                let mut rate_limiter = RateLimiter::new();
                for task in receiver {
                    if worker_shutdown.load(Ordering::SeqCst) {
                        return;
                    }

View on GitHub (pinned to 7491200858)

Solutions

  1. Check the proxy URLs in the Sentry transport options for validity (scheme, host, port)
  2. Verify TLS backend availability for the platform build (rustls/native-tls feature set)
  3. Fall back to the default (no-curl, no-proxy) transport if a custom transport cannot be built
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/core/sentry_transport.rs:45 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/8ae27a988479d79c. Report an issue: GitHub.