rustdesk/rustdesk · error · CliprdrError

failure to read file metadata or content, path: {path}, err:

Error message

failure to read file metadata or content, path: {path}, err: {err}

What it means

CliprdrError::FileError variant: reading a file's metadata or contents failed during clipboard file transfer. The payload names the exact path and carries the underlying std::io::Error, so the message tells you which file (path) and why (err — permissions, missing file, I/O). It fires when the FUSE/cliprdr backend tries to serve or ingest a file listed on the clipboard and the OS read fails.

Source

Thrown at libs/clipboard/src/lib.rs:87

}

#[derive(Error, Debug)]
pub enum CliprdrError {
    #[error("invalid cliprdr name")]
    CliprdrName,
    #[error("failed to init cliprdr")]
    CliprdrInit,
    #[error("cliprdr out of memory")]
    CliprdrOutOfMemory,
    #[error("cliprdr internal error")]
    ClipboardInternalError,
    #[error("cliprdr occupied")]
    ClipboardOccupied,
    #[error("conversion failure")]
    ConversionFailure,
    #[error("failure to read clipboard")]
    OpenClipboard,
    #[error("failure to read file metadata or content, path: {path}, err: {err}")]
    FileError { path: String, err: std::io::Error },
    #[error("invalid request: {description}")]
    InvalidRequest { description: String },
    #[error("common request: {description}")]
    CommonError { description: String },
    #[error("unknown cliprdr error")]
    Unknown(u32),
}

#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "t", content = "c")]
pub enum ClipboardFile {
    NotifyCallback {
        r#type: String,
        title: String,
        text: String,
    },
    MonitorReady,

View on GitHub (pinned to 91c9fccbb0)

Solutions

  1. Read the embedded err: NotFound/EACCES point to deleted or permission-denied files; recover by skipping that entry in the file list
  2. Verify the path exists and is readable by the RustDesk process user before retrying
  3. For remotely-advertised paths, validate reachability before attempting to stream contents
  4. Skip unreadable entries and continue the transfer instead of aborting the whole clipboard operation
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at libs/clipboard/src/lib.rs:87 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rustdesk/rustdesk@91c9fccbb0 (2026-09-10). Data as JSON: /api/errors/4ec0a4eca8129c77. Report an issue: GitHub.