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

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);

Trait Implementations

Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
Converts to this type from the input type.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to provide by using demand. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more