From b6cbd3950321687266db585879d2ad2ca148d9b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns?= Date: Tue, 18 Nov 2025 02:21:25 +0100 Subject: [PATCH] fix(oauth): let OAuth discovery skip to next well-known URL candidate on JSON parse error. (#545) --- crates/rmcp/src/transport/auth.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/crates/rmcp/src/transport/auth.rs b/crates/rmcp/src/transport/auth.rs index 3535410..f1ae1e0 100644 --- a/crates/rmcp/src/transport/auth.rs +++ b/crates/rmcp/src/transport/auth.rs @@ -698,12 +698,14 @@ impl AuthorizationManager { return Ok(None); } - let metadata = response - .json::() - .await - .map_err(|e| AuthError::MetadataError(format!("Failed to parse metadata: {}", e)))?; - debug!("metadata: {:?}", metadata); - Ok(Some(metadata)) + let body = response.text().await?; + match serde_json::from_str::(&body) { + Ok(metadata) => Ok(Some(metadata)), + Err(err) => { + debug!("Failed to parse metadata for {}: {}", discovery_url, err); + Ok(None) // malformed JSON ⇒ try next candidate + } + } } async fn discover_oauth_server_via_resource_metadata(