rustfs/rustfs · error · ClientError

Connect endpoint must be an HTTPS base URL without credentia

Error message

Connect endpoint must be an HTTPS base URL without credentials, query, or fragment

What it means

ClientError::Endpoint fires during ConnectClient construction when RUSTFS_CONNECT_ENDPOINT fails strict URL validation: it must be an HTTPS base URL with no embedded credentials, query string, or fragment. It is a configuration guard, not a network error.

Source

Thrown at rustfs/src/connect/client.rs:522

#[derive(Deserialize)]
struct ErrorDetail {
    #[serde(default)]
    reason: String,
}

async fn decode_reason(mut response: reqwest::Response) -> Option<String> {
    let body = read_body(&mut response).await.ok()?;
    serde_json::from_slice::<ErrorEnvelope>(&body)
        .ok()?
        .details
        .into_iter()
        .find_map(|detail| (!detail.reason.is_empty()).then_some(detail.reason))
}

#[derive(Debug, thiserror::Error)]
pub enum ClientError {
    #[error("Connect endpoint must be an HTTPS base URL without credentials, query, or fragment")]
    Endpoint,
    #[error("Connect root CA configuration is invalid")]
    RootCertificate,
    #[error(
        "Connect registration has a pending attempt for a different token; restore the original protected token configuration"
    )]
    PendingRegistration,
    #[error(
        "Connect credential rotation has an unfinished attempt for a different current certificate; inspect the local credential store"
    )]
    PendingRotation,
    #[error("RustFS is not registered with Connect")]
    NotRegistered,
    #[error("the Connect device private key is missing; restore device.key before using the stored certificate")]
    IdentityMissing,
    #[error("the Connect device certificate has expired; call ConnectClient::reenroll with a fresh registration token")]
    CredentialExpired,
    #[error("the Connect device certificate is not yet valid; fix local clock skew or call ConnectClient::reenroll")]

View on GitHub (pinned to 201c653dcd)

Solutions

  1. Set RUSTFS_CONNECT_ENDPOINT to a plain https://host[:port] base URL
  2. Remove any userinfo, query, or fragment components from the endpoint
  3. Ensure the URL scheme is https, not http
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at rustfs/src/connect/client.rs:522 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rustfs/rustfs@201c653dcd (2026-08-23). Data as JSON: /api/errors/65083fbfcddd2867. Report an issue: GitHub.