{"record":{"id":"66a8c7e55c52396a","repo":"rustdesk/rustdesk","slug":"failure-request","errorCode":null,"errorMessage":"failure request","messagePattern":"failure request","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"libs/clipboard/src/platform/unix/fuse/cs.rs","lineNumber":584,"sourceCode":"                log::error!(\"failed to receive file list from channel: {:?}\", e);\n                std::io::Error::new(std::io::ErrorKind::TimedOut, e)\n            })?;\n\n            match reply {\n                ClipboardFile::FileContentsResponse {\n                    msg_flags,\n                    stream_id,\n                    requested_data,\n                } => {\n                    if stream_id != request_stream_id {\n                        log::debug!(\"stream id mismatch, ignore\");\n                        continue;\n                    }\n\n                    if msg_flags & 1 == 0 {\n                        retry_times += 1;\n                        if retry_times > READ_RETRY {\n                            return Err(std::io::Error::new(\n                                std::io::ErrorKind::Other,\n                                \"failure request\",\n                            ));\n                        }\n\n                        send_data(node.conn_id, request.clone()).map_err(|e| {\n                            log::error!(\"failed to send file list to channel: {:?}\", e);\n                            std::io::Error::new(std::io::ErrorKind::Other, e)\n                        })?;\n                        continue;\n                    }\n                    return Ok(requested_data);\n                }\n                _ => {\n                    return Err(std::io::Error::new(\n                        std::io::ErrorKind::Other,\n                        \"invalid reply\",\n                    ))","sourceCodeStart":566,"sourceCodeEnd":602,"githubUrl":"https://github.com/rustdesk/rustdesk/blob/91c9fccbb0f7bfe5f11644d5fbdec9b23fa10540/libs/clipboard/src/platform/unix/fuse/cs.rs#L566-L602","documentation":"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.","triggerScenarios":"Thrown at libs/clipboard/src/platform/unix/fuse/cs.rs:584 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check whether the requested file still exists and is readable on the remote side (its cliprdr keeps flagging failure)","Log the remote's failure detail if the response carries one, before the retry loop exhausts","Invalidate the FUSE node after this error so subsequent reads re-negotiate rather than hitting the same dead stream","If the remote consistently refuses, drop and re-establish the clipboard file session"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"91c9fccbb0f7bfe5f11644d5fbdec9b23fa10540","analyzedAt":"2026-09-10T19:53:44.083Z","contentChangedAt":"2026-09-10T19:53:44.083Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}