fix: Graceful HTTP client fallbacks and overflow protection
HTTP client initialization (embedding/ollama.rs, gitlab/client.rs): - Replace expect/panic with unwrap_or_else fallback to default Client - Log warning when configured client fails to build - Prevents crash on TLS/system configuration issues Doctor command (cli/commands/doctor.rs): - Handle reqwest Client::builder() failure in Ollama health check - Return Warning status with descriptive message instead of panicking - Ensures doctor command remains operational even with HTTP issues These changes improve resilience when running in unusual environments (containers with limited TLS, restrictive network policies, etc.) without affecting normal operation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -383,10 +383,22 @@ async fn check_ollama(config: Option<&Config>) -> OllamaCheck {
|
||||
let base_url = &config.embedding.base_url;
|
||||
let model = &config.embedding.model;
|
||||
|
||||
let client = reqwest::Client::builder()
|
||||
let client = match reqwest::Client::builder()
|
||||
.timeout(std::time::Duration::from_secs(2))
|
||||
.build()
|
||||
.unwrap();
|
||||
{
|
||||
Ok(client) => client,
|
||||
Err(e) => {
|
||||
return OllamaCheck {
|
||||
result: CheckResult {
|
||||
status: CheckStatus::Warning,
|
||||
message: Some(format!("Failed to build HTTP client: {e}")),
|
||||
},
|
||||
url: Some(base_url.clone()),
|
||||
model: Some(model.clone()),
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
match client.get(format!("{base_url}/api/tags")).send().await {
|
||||
Ok(response) if response.status().is_success() => {
|
||||
|
||||
Reference in New Issue
Block a user