{"record":{"id":"201ffc7f934c44ad","repo":"epi052/feroxbuster","slug":"could-not-build-client","errorCode":null,"errorMessage":"Could not build client","messagePattern":"Could not build client","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"src/config/container.rs","lineNumber":393,"sourceCode":"impl Default for Configuration {\n    /// Builds the default Configuration for feroxbuster\n    fn default() -> Self {\n        let timeout = timeout();\n        let user_agent = user_agent();\n        let headers = HashMap::new();\n        let client_config = client::ClientConfig {\n            timeout,\n            user_agent: &user_agent,\n            redirects: false,\n            insecure: false,\n            headers: &headers,\n            proxy: None,\n            server_certs: Option::<Vec<String>>::None,\n            client_cert: None,\n            client_key: None,\n            scope: &Vec::new(), // no scope by default\n        };\n        let client = client::initialize(client_config).expect(\"Could not build client\");\n        let replay_client = None;\n        let status_codes = status_codes();\n        let replay_codes = status_codes.clone();\n        let kind = serialized_type();\n        let output_level = OutputLevel::Default;\n        let requester_policy = RequesterPolicy::Default;\n        let extract_links = extract_links();\n\n        Configuration {\n            kind,\n            client,\n            timeout,\n            user_agent,\n            replay_codes,\n            status_codes,\n            extract_links,\n            replay_client,\n            requester_policy,","sourceCodeStart":375,"sourceCodeEnd":411,"githubUrl":"https://github.com/epi052/feroxbuster/blob/1f595dab5c76858d5a14fbc47dabf2563d729c62/src/config/container.rs#L375-L411","documentation":"Configuration::default() builds a default reqwest-based client via client::initialize and unwraps it with expect. If the TLS/runtime stack cannot build a client (reqwest builder error), the process panics with 'Could not build client', since a scanner cannot operate without an HTTP client.","triggerScenarios":"client::initialize failing while constructing the default client config — e.g. reqwest::ClientBuilder::build() erroring due to TLS backend initialization failure or missing root certificates on the host.","commonSituations":"Static binaries built with a TLS backend that cannot load root certificates (missing CA bundle), musl builds with native-tls issues, or rustls setups with no installed process-default crypto provider.","solutions":["Install/update system CA certificates (ca-certificates package) so the TLS backend can find roots","Obtain a feroxbuster binary matching your platform's TLS stack, or one with rustls and bundled webpki roots","Set SSL_CERT_FILE / SSL_CERT_DIR to a valid CA bundle if the default lookup fails"],"exampleFix":"// before (shell)\n./feroxbuster -u http://host # missing CA bundle -> panic\n// after (shell)\napt-get install ca-certificates && ./feroxbuster -u http://host","handlingStrategy":"try-catch","validationCode":"let cert_ok = std::env::var(\"SSL_CERT_FILE\").map(|p| std::path::Path::new(&p).exists()).unwrap_or(true);\nif !cert_ok { eprintln!(\"SSL_CERT_FILE points nowhere\"); }","typeGuard":null,"tryCatchPattern":"// expect() panics; guard startup itself\nmatch std::panic::catch_unwind(start_feroxbuster) { Err(_) => eprintln!(\"client init failed: check CA certs / TLS backend\"), Ok(v) => v }","preventionTips":["Install ca-certificates on the host","Use builds with rustls + bundled webpki roots for portability","Set SSL_CERT_FILE/SSL_CERT_DIR when using custom CA setups"],"tags":["tls","client","startup","panic"],"backgroundTag":"module-init-failed","analyzedSha":"1f595dab5c76858d5a14fbc47dabf2563d729c62","analyzedAt":"2026-09-13T19:33:06.208Z","contentChangedAt":"2026-09-13T19:33:06.208Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}