pub enum ClamdError {
ChunkSizeError(TryFromIntError),
ConnectError(Error),
DecodingUtf8Error(FromUtf8Error),
DecodingIoError(Error),
InvalidResponse(String),
NoResponse,
IncompleteResponse(String),
ScanError(String),
}
Expand description
Errors that can occur when using ClamdClient
.
Variants§
ChunkSizeError(TryFromIntError)
Occurs when the custom set chunk size is larger than
std::u32::MAX
.
ConnectError(Error)
Occurs when the library cannot connect to the tcp or unix
socket. Contains underlying std::io::Error
.
DecodingUtf8Error(FromUtf8Error)
Occurs when the clamd response is not valid Utf8.
DecodingIoError(Error)
Occurs when there was an std::io::Error
while transfering
commands or data to/from clamd.
InvalidResponse(String)
Occurs when the response from clamd is not what the library expects. Contains the invalid response.
NoResponse
Occurs when there should be a response from clamd but it just closed the connection without sending a response.
IncompleteResponse(String)
Occurs when we expect a longer response from clamd, but it is somehow malformed. Contains the invalid response.
ScanError(String)
Occurs when everything between this library and clamd went
well but clamd seems to have found a virus signature. See also
ClamdError::scan_error
.
Implementations§
Source§impl ClamdError
impl ClamdError
Sourcepub fn scan_error(self) -> Option<String>
pub fn scan_error(self) -> Option<String>
If you want to ignore any error but an actual malignent scan result from clamd. I do not recommend using this without careful thought, as any other error could hide that uploaded bytes are actually a virus.
§Example
let address = "127.0.0.1:3310".parse::<SocketAddr>()?;
let mut clamd_client = ClamdClientBuilder::tcp_socket(&address).build();
// This downloads a virus signature that is benign but trips clamd.
let eicar_bytes = reqwest::get("https://secure.eicar.org/eicarcom2.zip")
.await?
.bytes()
.await?;
let err = clamd_client.scan_bytes(&eicar_bytes).await.unwrap_err();
let msg = err.scan_error().unwrap();
println!("Eicar scan returned that its a virus: {}", msg);