Bump to hickory-resolver 0.26
This commit is contained in:
120
Cargo.lock
generated
120
Cargo.lock
generated
@@ -1332,7 +1332,7 @@ dependencies = [
|
|||||||
"whatlang",
|
"whatlang",
|
||||||
"x509-parser 0.17.0",
|
"x509-parser 0.17.0",
|
||||||
"xxhash-rust",
|
"xxhash-rust",
|
||||||
"zip 3.0.0",
|
"zip",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1475,21 +1475,6 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crc"
|
|
||||||
version = "3.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675"
|
|
||||||
dependencies = [
|
|
||||||
"crc-catalog",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crc-catalog"
|
|
||||||
version = "2.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc16"
|
name = "crc16"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
@@ -3041,9 +3026,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hickory-proto"
|
name = "hickory-proto"
|
||||||
version = "0.25.2"
|
version = "0.26.0-alpha.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
|
checksum = "a62d7684f766b0f96344be88c023f9b6650039aea09d526b4974cce302eb61b1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bitflags 2.9.1",
|
"bitflags 2.9.1",
|
||||||
@@ -3072,13 +3057,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hickory-resolver"
|
name = "hickory-resolver"
|
||||||
version = "0.25.2"
|
version = "0.26.0-alpha.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a"
|
checksum = "bbab5e26a7f82341145ba1fbd1f1858d0490624fcc46270db2d3c4a101f763f4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"hickory-proto 0.25.2",
|
"hickory-proto 0.26.0-alpha.1",
|
||||||
"ipconfig",
|
"ipconfig",
|
||||||
"moka",
|
"moka",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
@@ -4148,6 +4133,26 @@ dependencies = [
|
|||||||
"windows-targets 0.53.0",
|
"windows-targets 0.53.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "liblzma"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "66352d7a8ac12d4877b6e6ea5a9b7650ee094257dc40889955bea5bc5b08c1d0"
|
||||||
|
dependencies = [
|
||||||
|
"liblzma-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "liblzma-sys"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5839bad90c3cc2e0b8c4ed8296b80e86040240f81d46b9c0e9bc8dd51ddd3af1"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"libc",
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libm"
|
name = "libm"
|
||||||
version = "0.2.15"
|
version = "0.2.15"
|
||||||
@@ -4301,32 +4306,11 @@ dependencies = [
|
|||||||
"twox-hash 1.6.3",
|
"twox-hash 1.6.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lzma-rs"
|
|
||||||
version = "0.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e"
|
|
||||||
dependencies = [
|
|
||||||
"byteorder",
|
|
||||||
"crc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lzma-sys"
|
|
||||||
version = "0.1.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
|
|
||||||
dependencies = [
|
|
||||||
"cc",
|
|
||||||
"libc",
|
|
||||||
"pkg-config",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mail-auth"
|
name = "mail-auth"
|
||||||
version = "0.7.0"
|
version = "0.7.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "948946ae9bf1bb98f6101dad1a6b473f140eeb633e74d48c732464796924073b"
|
checksum = "628034968911ec4ac1d03468d55113c182af3848b4f6da19e736c5fa2bc684a3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash",
|
"ahash",
|
||||||
"flate2",
|
"flate2",
|
||||||
@@ -4342,7 +4326,7 @@ dependencies = [
|
|||||||
"rustls-pemfile 2.2.0",
|
"rustls-pemfile 2.2.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"zip 2.4.2",
|
"zip",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -9657,15 +9641,6 @@ version = "0.8.15"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3"
|
checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "xz2"
|
|
||||||
version = "0.1.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
|
|
||||||
dependencies = [
|
|
||||||
"lzma-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yasna"
|
name = "yasna"
|
||||||
version = "0.5.2"
|
version = "0.5.2"
|
||||||
@@ -10236,39 +10211,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zip"
|
name = "zip"
|
||||||
version = "2.4.2"
|
version = "4.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
|
checksum = "153a6fff49d264c4babdcfa6b4d534747f520e56e8f0f384f3b808c4b64cc1fd"
|
||||||
dependencies = [
|
|
||||||
"aes",
|
|
||||||
"arbitrary",
|
|
||||||
"bzip2",
|
|
||||||
"constant_time_eq",
|
|
||||||
"crc32fast",
|
|
||||||
"crossbeam-utils",
|
|
||||||
"deflate64",
|
|
||||||
"displaydoc",
|
|
||||||
"flate2",
|
|
||||||
"getrandom 0.3.3",
|
|
||||||
"hmac 0.12.1",
|
|
||||||
"indexmap 2.9.0",
|
|
||||||
"lzma-rs",
|
|
||||||
"memchr",
|
|
||||||
"pbkdf2",
|
|
||||||
"sha1",
|
|
||||||
"thiserror 2.0.12",
|
|
||||||
"time",
|
|
||||||
"xz2",
|
|
||||||
"zeroize",
|
|
||||||
"zopfli",
|
|
||||||
"zstd",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zip"
|
|
||||||
version = "3.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "12598812502ed0105f607f941c386f43d441e00148fce9dec3ca5ffb0bde9308"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes",
|
||||||
"arbitrary",
|
"arbitrary",
|
||||||
@@ -10280,12 +10225,11 @@ dependencies = [
|
|||||||
"getrandom 0.3.3",
|
"getrandom 0.3.3",
|
||||||
"hmac 0.12.1",
|
"hmac 0.12.1",
|
||||||
"indexmap 2.9.0",
|
"indexmap 2.9.0",
|
||||||
"lzma-rs",
|
"liblzma",
|
||||||
"memchr",
|
"memchr",
|
||||||
"pbkdf2",
|
"pbkdf2",
|
||||||
"sha1",
|
"sha1",
|
||||||
"time",
|
"time",
|
||||||
"xz2",
|
|
||||||
"zeroize",
|
"zeroize",
|
||||||
"zopfli",
|
"zopfli",
|
||||||
"zstd",
|
"zstd",
|
||||||
|
|||||||
@@ -29,4 +29,4 @@ human-size = "0.4.2"
|
|||||||
futures = "0.3.28"
|
futures = "0.3.28"
|
||||||
pwhash = "1.0.0"
|
pwhash = "1.0.0"
|
||||||
rand = "0.9.0"
|
rand = "0.9.0"
|
||||||
mail-auth = { version = "0.7" }
|
mail-auth = { version = "0.7.1" }
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ imap_proto = { path = "../imap-proto" }
|
|||||||
sieve-rs = { version = "0.7", features = ["rkyv", "serde"] }
|
sieve-rs = { version = "0.7", features = ["rkyv", "serde"] }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
||||||
mail-builder = { version = "0.4" }
|
mail-builder = { version = "0.4" }
|
||||||
mail-auth = { version = "0.7" }
|
mail-auth = { version = "0.7.1" }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
smtp-proto = { version = "0.1", features = ["rkyv"] }
|
smtp-proto = { version = "0.1", features = ["rkyv"] }
|
||||||
dns-update = { version = "0.1" }
|
dns-update = { version = "0.1" }
|
||||||
@@ -57,7 +57,7 @@ unicode-security = "0.1.0"
|
|||||||
infer = "0.19"
|
infer = "0.19"
|
||||||
bincode = { version = "2.0", features = ["serde"] }
|
bincode = { version = "2.0", features = ["serde"] }
|
||||||
hostname = "0.4.0"
|
hostname = "0.4.0"
|
||||||
zip = "3.0"
|
zip = "4.0"
|
||||||
pwhash = "1.0.0"
|
pwhash = "1.0.0"
|
||||||
xxhash-rust = { version = "0.8.5", features = ["xxh3"] }
|
xxhash-rust = { version = "0.8.5", features = ["xxh3"] }
|
||||||
psl = "2"
|
psl = "2"
|
||||||
|
|||||||
@@ -15,9 +15,8 @@ use mail_auth::{
|
|||||||
MessageAuthenticator,
|
MessageAuthenticator,
|
||||||
hickory_resolver::{
|
hickory_resolver::{
|
||||||
TokioResolver,
|
TokioResolver,
|
||||||
config::{NameServerConfig, ResolverConfig, ResolverOpts},
|
config::{NameServerConfig, ProtocolConfig, ResolverConfig, ResolverOpts},
|
||||||
name_server::TokioConnectionProvider,
|
name_server::TokioConnectionProvider,
|
||||||
proto::xfer::Protocol,
|
|
||||||
system_conf::read_system_conf,
|
system_conf::read_system_conf,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -119,7 +118,7 @@ impl Resolvers {
|
|||||||
})
|
})
|
||||||
.unwrap_or_else(|_| (ResolverConfig::cloudflare(), ResolverOpts::default())),
|
.unwrap_or_else(|_| (ResolverConfig::cloudflare(), ResolverOpts::default())),
|
||||||
"custom" => {
|
"custom" => {
|
||||||
let mut resolver_config = ResolverConfig::new();
|
let mut resolver_config = ResolverConfig::default();
|
||||||
for url in config
|
for url in config
|
||||||
.values("resolver.custom")
|
.values("resolver.custom")
|
||||||
.map(|(_, v)| v.to_string())
|
.map(|(_, v)| v.to_string())
|
||||||
@@ -131,21 +130,23 @@ impl Resolvers {
|
|||||||
{
|
{
|
||||||
(
|
(
|
||||||
match proto.as_str() {
|
match proto.as_str() {
|
||||||
"udp" => Protocol::Udp,
|
"udp" => ProtocolConfig::Udp,
|
||||||
"tcp" => Protocol::Tcp,
|
"tcp" => ProtocolConfig::Tcp,
|
||||||
"tls" => Protocol::Tls,
|
"tls" => ProtocolConfig::Tls {
|
||||||
|
server_name: host.clone().into(),
|
||||||
|
},
|
||||||
_ => {
|
_ => {
|
||||||
config.new_parse_error(
|
config.new_parse_error(
|
||||||
"resolver.custom",
|
"resolver.custom",
|
||||||
format!("Invalid custom resolver protocol {url:?}"),
|
format!("Invalid custom resolver protocol {url:?}"),
|
||||||
);
|
);
|
||||||
Protocol::Udp
|
ProtocolConfig::Udp
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
host.to_string(),
|
host.to_string(),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
(Protocol::Udp, url)
|
(ProtocolConfig::Udp, url)
|
||||||
};
|
};
|
||||||
|
|
||||||
let (host, port) = if let Some(host) = host.strip_prefix('[') {
|
let (host, port) = if let Some(host) = host.strip_prefix('[') {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ services = { path = "../services" }
|
|||||||
smtp-proto = { version = "0.1" }
|
smtp-proto = { version = "0.1" }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] }
|
mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] }
|
||||||
mail-builder = { version = "0.4" }
|
mail-builder = { version = "0.4" }
|
||||||
mail-auth = { version = "0.7", features = ["generate"] }
|
mail-auth = { version = "0.7.1", features = ["generate"] }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
tokio = { version = "1.45", features = ["rt"] }
|
tokio = { version = "1.45", features = ["rt"] }
|
||||||
hyper = { version = "1.0.1", features = ["server", "http1", "http2"] }
|
hyper = { version = "1.0.1", features = ["server", "http1", "http2"] }
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ smtp-proto = { version = "0.1" }
|
|||||||
mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] }
|
mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] }
|
||||||
mail-builder = { version = "0.4" }
|
mail-builder = { version = "0.4" }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
mail-auth = { version = "0.7", features = ["generate"] }
|
mail-auth = { version = "0.7.1", features = ["generate"] }
|
||||||
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
||||||
serde = { version = "1.0", features = ["derive"]}
|
serde = { version = "1.0", features = ["derive"]}
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ email = { path = "../email" }
|
|||||||
directory = { path = "../directory" }
|
directory = { path = "../directory" }
|
||||||
smtp = { path = "../smtp" }
|
smtp = { path = "../smtp" }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
||||||
mail-auth = { version = "0.7", features = ["rkyv"] }
|
mail-auth = { version = "0.7.1", features = ["rkyv"] }
|
||||||
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
||||||
tokio = { version = "1.45", features = ["net", "macros"] }
|
tokio = { version = "1.45", features = ["net", "macros"] }
|
||||||
serde = { version = "1.0", features = ["derive"]}
|
serde = { version = "1.0", features = ["derive"]}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ common = { path = "../common" }
|
|||||||
email = { path = "../email" }
|
email = { path = "../email" }
|
||||||
spam-filter = { path = "../spam-filter" }
|
spam-filter = { path = "../spam-filter" }
|
||||||
trc = { path = "../trc" }
|
trc = { path = "../trc" }
|
||||||
mail-auth = { version = "0.7", features = ["rkyv"] }
|
mail-auth = { version = "0.7.1", features = ["rkyv"] }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
||||||
mail-builder = { version = "0.4" }
|
mail-builder = { version = "0.4" }
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ common = { path = "../common" }
|
|||||||
smtp-proto = { version = "0.1", features = ["rkyv"] }
|
smtp-proto = { version = "0.1", features = ["rkyv"] }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
||||||
mail-builder = { version = "0.4" }
|
mail-builder = { version = "0.4" }
|
||||||
mail-auth = { version = "0.7" }
|
mail-auth = { version = "0.7.1" }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
tokio = { version = "1.45", features = ["net", "macros"] }
|
tokio = { version = "1.45", features = ["net", "macros"] }
|
||||||
psl = "2"
|
psl = "2"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ resolver = "2"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
event_macro = { path = "./event-macro" }
|
event_macro = { path = "./event-macro" }
|
||||||
mail-auth = { version = "0.7" }
|
mail-auth = { version = "0.7.1" }
|
||||||
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
mail-parser = { version = "0.11", features = ["full_encoding"] }
|
||||||
base64 = "0.22.1"
|
base64 = "0.22.1"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ rustls-pki-types = { version = "1" }
|
|||||||
tokio = { version = "1.45", features = ["net", "macros", "signal"] }
|
tokio = { version = "1.45", features = ["net", "macros", "signal"] }
|
||||||
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] }
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] }
|
||||||
serde = { version = "1.0", features = ["derive"]}
|
serde = { version = "1.0", features = ["derive"]}
|
||||||
mail-auth = { version = "0.7" }
|
mail-auth = { version = "0.7.1" }
|
||||||
smtp-proto = { version = "0.1" }
|
smtp-proto = { version = "0.1" }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
ahash = { version = "0.8", features = ["serde"] }
|
ahash = { version = "0.8", features = ["serde"] }
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ trc = { path = "../crates/trc" }
|
|||||||
managesieve = { path = "../crates/managesieve", features = ["test_mode", "enterprise"] }
|
managesieve = { path = "../crates/managesieve", features = ["test_mode", "enterprise"] }
|
||||||
smtp-proto = { version = "0.1" }
|
smtp-proto = { version = "0.1" }
|
||||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||||
mail-auth = { version = "0.7", features = ["test"] }
|
mail-auth = { version = "0.7.1", features = ["test"] }
|
||||||
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
sieve-rs = { version = "0.7", features = ["rkyv"] }
|
||||||
utils = { path = "../crates/utils", features = ["test_mode"] }
|
utils = { path = "../crates/utils", features = ["test_mode"] }
|
||||||
jmap-client = { version = "0.3", features = ["websockets", "debug", "async"] }
|
jmap-client = { version = "0.3", features = ["websockets", "debug", "async"] }
|
||||||
|
|||||||
Reference in New Issue
Block a user