{"record":{"id":"fe0b6a618582c229","repo":"epi052/feroxbuster","slug":"e","errorCode":null,"errorMessage":"e","messagePattern":"e","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/utils.rs","lineNumber":216,"sourceCode":"    let tx_stats = handles.stats.tx.clone();\n\n    let response = make_request(client, url, method, data, level, &handles.config, tx_stats).await;\n\n    let scans = handles.ferox_scans()?;\n    match response {\n        Ok(resp) => {\n            match resp.status() {\n                StatusCode::TOO_MANY_REQUESTS | StatusCode::FORBIDDEN => {\n                    scans.increment_status_code(url.as_str(), resp.status());\n                }\n                _ => {}\n            }\n            Ok(resp)\n        }\n        Err(e) => {\n            log::warn!(\"err: {e:?}\");\n            scans.increment_error(url.as_str());\n            bail!(e)\n        }\n    }\n}\n\n/// Initiate request to the given `Url` using `Client`\npub async fn make_request(\n    client: &Client,\n    url: &Url,\n    method: &str,\n    mut data: Option<&[u8]>,\n    output_level: OutputLevel,\n    config: &Configuration,\n    tx_stats: UnboundedSender<Command>,\n) -> Result<Response> {\n    log::trace!(\n        \"enter: make_request(Configuration::Client, {url}, {output_level:?}, {tx_stats:?})\"\n    );\n    let tmp_workaround: Option<&[u8]> = Some(&[0xd_u8, 0xa]); // \\r\\n","sourceCodeStart":198,"sourceCodeEnd":234,"githubUrl":"https://github.com/epi052/feroxbuster/blob/1f595dab5c76858d5a14fbc47dabf2563d729c62/src/utils.rs#L198-L234","documentation":"utils::logged_request wraps a reqwest call made through a FeroxResponse-tracking client. When the client returns Err (connection failure, timeout, TLS error, etc.), the request error is logged, the error counter for the URL is incremented in stats, and the raw error is bailed to the caller.","triggerScenarios":"Any reqwest client error inside logged_request - DNS resolution failure, connection refused/reset, timeouts, TLS handshake failure - during request_link, directory_listing, create_similarity_filter, connectivity, or normal request flow.","commonSituations":"Target drops connections under load, rate limiting closes sockets, DNS flakiness, TLS issues, or scanning through a misconfigured or overloaded proxy.","solutions":["Inspect the logged 'err: {e:?}' warning for the underlying reqwest cause","Reduce --threads/-t to lower connection pressure on the target","Add --rate-limit or delays if the server is rejecting/breaking connections","Verify proxy settings or remove --proxy if misconfigured","Use --insecure for self-signed certificate environments"],"exampleFix":"// before\nferoxbuster -u https://target -t 200\n// after\nferoxbuster -u https://target -t 20 --rate-limit 100","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// caller of logged_request\nmatch logged_request(&client, &method, &url, &tx_stats, &scans).await {\n    Err(e) => log::debug!(\"request to {url} failed, continuing: {e}\"),\n    Ok(resp) => { /* handle */ }\n}","preventionTips":["Tune -t/--rate-limit for fragile targets","Verify proxy config before long scans","Monitor stats error counters during the scan"],"tags":["network","request","reqwest"],"backgroundTag":"http-request-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"}