rustdesk/rustdesk · error

failure request

Error message

failure request

What it means

In read_node (the FUSE file-contents read loop), the peer's FileContentsResponse arrived with msg_flags & 1 == 0 — the failure bit set, meaning the remote cliprdr side reported the request as failed — on more than READ_RETRY consecutive attempts. The loop re-sends the request after each flagged failure, and this io::Error(Other, "failure request") is raised only when the retry budget is exhausted; the FUSE read that triggered it then fails with EIO.

Source

Thrown at libs/clipboard/src/platform/unix/fuse/cs.rs:584

                log::error!("failed to receive file list from channel: {:?}", e);
                std::io::Error::new(std::io::ErrorKind::TimedOut, e)
            })?;

            match reply {
                ClipboardFile::FileContentsResponse {
                    msg_flags,
                    stream_id,
                    requested_data,
                } => {
                    if stream_id != request_stream_id {
                        log::debug!("stream id mismatch, ignore");
                        continue;
                    }

                    if msg_flags & 1 == 0 {
                        retry_times += 1;
                        if retry_times > READ_RETRY {
                            return Err(std::io::Error::new(
                                std::io::ErrorKind::Other,
                                "failure request",
                            ));
                        }

                        send_data(node.conn_id, request.clone()).map_err(|e| {
                            log::error!("failed to send file list to channel: {:?}", e);
                            std::io::Error::new(std::io::ErrorKind::Other, e)
                        })?;
                        continue;
                    }
                    return Ok(requested_data);
                }
                _ => {
                    return Err(std::io::Error::new(
                        std::io::ErrorKind::Other,
                        "invalid reply",
                    ))

View on GitHub (pinned to 91c9fccbb0)

Solutions

  1. Check whether the requested file still exists and is readable on the remote side (its cliprdr keeps flagging failure)
  2. Log the remote's failure detail if the response carries one, before the retry loop exhausts
  3. Invalidate the FUSE node after this error so subsequent reads re-negotiate rather than hitting the same dead stream
  4. If the remote consistently refuses, drop and re-establish the clipboard file session
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at libs/clipboard/src/platform/unix/fuse/cs.rs:584 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/66a8c7e55c52396a. Report an issue: GitHub.