From e66097335b3a7148f6c0c5a81b31b08d3d30b3f2 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 3 Apr 2025 01:00:12 +1100 Subject: [PATCH] fix(ollama): respect ollama URL and port (#2004) --- crates/goose/src/providers/ollama.rs | 7 ++++++- crates/goose/src/providers/toolshim.rs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/goose/src/providers/ollama.rs b/crates/goose/src/providers/ollama.rs index eb255ed4..169c7c64 100644 --- a/crates/goose/src/providers/ollama.rs +++ b/crates/goose/src/providers/ollama.rs @@ -65,8 +65,13 @@ impl OllamaProvider { .map_err(|e| ProviderError::RequestFailed(format!("Invalid base URL: {e}")))?; // Set the default port if missing + // Don't add default port if: + // 1. URL explicitly ends with standard ports (:80 or :443) + // 2. URL uses HTTPS (which implicitly uses port 443) let explicit_default_port = self.host.ends_with(":80") || self.host.ends_with(":443"); - if base_url.port().is_none() && !explicit_default_port { + let is_https = base_url.scheme() == "https"; + + if base_url.port().is_none() && !explicit_default_port && !is_https { base_url.set_port(Some(OLLAMA_DEFAULT_PORT)).map_err(|_| { ProviderError::RequestFailed("Failed to set default port".to_string()) })?; diff --git a/crates/goose/src/providers/toolshim.rs b/crates/goose/src/providers/toolshim.rs index c3b6306d..eea5bd6e 100644 --- a/crates/goose/src/providers/toolshim.rs +++ b/crates/goose/src/providers/toolshim.rs @@ -96,8 +96,13 @@ impl OllamaInterpreter { .map_err(|e| ProviderError::RequestFailed(format!("Invalid base URL: {e}")))?; // Set the default port if missing + // Don't add default port if: + // 1. URL explicitly ends with standard ports (:80 or :443) + // 2. URL uses HTTPS (which implicitly uses port 443) let explicit_default_port = host.ends_with(":80") || host.ends_with(":443"); - if base_url.port().is_none() && !explicit_default_port { + let is_https = base_url.scheme() == "https"; + + if base_url.port().is_none() && !explicit_default_port && !is_https { base_url.set_port(Some(OLLAMA_DEFAULT_PORT)).map_err(|_| { ProviderError::RequestFailed("Failed to set default port".to_string()) })?;