prepare resolver 0.8.0 release

This commit is contained in:
Benjamin Fry 2018-02-05 22:55:31 -08:00
parent 25a568e81d
commit 8f8a608218
16 changed files with 88 additions and 43 deletions

View File

@ -3,6 +3,24 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## 0.14.0 (unreleased)
### Changed
- Updated `trust-dns-proto` to `0.3`, which brings in better `Name` and `Label` impls
- rusqlite updated to 0.13 #331 (@oherrala)
- Many serialization improvements #317
### Added
- `Name` and `Label` now support idna, punycode, see `Name::from_str`
- `trust_dns::rr::ZoneUsage` for detecting restrictions on `Name`s and their associated zones
### Fixed
- octal escapes fixed in `Name` parsing #330
- `NULL` record type incorrectly valued at `0` to proper `10` #329 (@jannic)
## 0.13.0
### Added

45
Cargo.lock generated
View File

@ -110,13 +110,13 @@ dependencies = [
[[package]]
name = "clap"
version = "2.29.2"
version = "2.29.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
"atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -559,11 +559,12 @@ dependencies = [
[[package]]
name = "rand"
version = "0.3.20"
version = "0.3.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -593,7 +594,7 @@ dependencies = [
"lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -765,7 +766,7 @@ dependencies = [
[[package]]
name = "strsim"
version = "0.6.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@ -911,7 +912,7 @@ version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.29.2 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)",
"data-encoding 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
@ -919,7 +920,7 @@ dependencies = [
"lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl 0.9.23 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
@ -944,7 +945,7 @@ dependencies = [
"rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
"untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -976,8 +977,8 @@ dependencies = [
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns 0.13.0",
"trust-dns-openssl 0.2.0",
"trust-dns-proto 0.2.0",
"trust-dns-resolver 0.7.0",
"trust-dns-proto 0.3.0",
"trust-dns-resolver 0.8.0",
"trust-dns-rustls 0.2.0",
"trust-dns-server 0.13.0",
]
@ -991,7 +992,7 @@ dependencies = [
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns 0.13.0",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
]
[[package]]
@ -1003,12 +1004,12 @@ dependencies = [
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-openssl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns 0.13.0",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
]
[[package]]
name = "trust-dns-proto"
version = "0.2.0"
version = "0.3.0"
dependencies = [
"byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1028,7 +1029,7 @@ dependencies = [
[[package]]
name = "trust-dns-resolver"
version = "0.7.0"
version = "0.8.0"
dependencies = [
"error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1038,7 +1039,7 @@ dependencies = [
"lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"resolv-conf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
]
[[package]]
@ -1051,7 +1052,7 @@ dependencies = [
"tokio-core 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-rustls 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"trust-dns 0.13.0",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
]
[[package]]
@ -1060,7 +1061,7 @@ version = "0.13.0"
dependencies = [
"backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.29.2 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1077,14 +1078,14 @@ dependencies = [
"trust-dns 0.13.0",
"trust-dns-native-tls 0.2.0",
"trust-dns-openssl 0.2.0",
"trust-dns-proto 0.2.0",
"trust-dns-proto 0.3.0",
]
[[package]]
name = "trust-dns-util"
version = "0.1.1"
dependencies = [
"clap 2.29.2 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)",
"data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1249,7 +1250,7 @@ dependencies = [
"checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0"
"checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
"checksum chrono 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c20ebe0b2b08b0aeddba49c609fe7957ba2e33449882cb186a180bc60682fa9"
"checksum clap 2.29.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4151c5790817c7d21bbdc6c3530811f798172915f93258244948b93ba19604a6"
"checksum clap 2.29.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b8f59bcebcfe4269b09f71dab0da15b355c75916a8f975d3876ce81561893ee"
"checksum coco 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c06169f5beb7e31c7c67ebf5540b8b472d23e3eade3b2ec7d1f5b504a85f91bd"
"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67"
"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d"
@ -1305,7 +1306,7 @@ dependencies = [
"checksum quick-error 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eda5fe9b71976e62bc81b781206aaa076401769b2143379d3eb2118388babac4"
"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
"checksum radix_trie 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "211c49b6a9995cac0fd1dd9ca60b42cf3a51e151a12eb954b3a9e75513426ee8"
"checksum rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "512870020642bb8c221bf68baa1b2573da814f6ccfe5c9699b1c303047abe9b1"
"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1"
"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"
"checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8"
"checksum rayon-core 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e64b609139d83da75902f88fd6c01820046840a18471e4dfcd5ac7c0f46bea53"
@ -1330,7 +1331,7 @@ dependencies = [
"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
"checksum slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fdeff4cd9ecff59ec7e3744cbca73dfe5ac35c2aedb2cfba8a1c715a18912e9d"
"checksum socket2 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a76b792959eba82f021c9028c8ecb6396f085268d6d46af2ed96a829cc758d7c"
"checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"
"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
"checksum tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f73eebdb68c14bcb24aef74ea96079830e7fa7b31a6106e42ea7ee887c1e134e"

View File

@ -61,7 +61,7 @@ radix_trie = "0.1.2"
rand = "^0.4"
ring = { version = "^0.12", optional = true }
tokio-core = "^0.1"
trust-dns-proto = {version = "^0.2", path = "../proto", features = ["dnssec"] }
trust-dns-proto = {version = "^0.3", path = "../proto", features = ["dnssec"] }
untrusted = { version = "^0.5", optional = true }
[dev-dependencies]

View File

@ -49,7 +49,7 @@ fn test_get() {
let conn = UdpClientConnection::new(socket).unwrap();
let client = SyncClient::new(conn);
let name = Name::from_utf8("www.example.com.").unwrap();
let name = Name::from_str("www.example.com.").unwrap();
let result = client
.query(&name, DNSClass::IN, RecordType::A)
.expect("query failed");
@ -110,11 +110,11 @@ fn test_create() {
let conn = UdpClientConnection::new(socket).unwrap();
let client = create_sig0_ready_client(conn);
let origin = Name::from_utf8("example.com.").unwrap();
let origin = Name::from_str("example.com.").unwrap();
// create a record
let mut record = Record::with(
Name::from_utf8("new.example.com.").unwrap(),
Name::from_str("new.example.com.").unwrap(),
RecordType::A,
Duration::minutes(5).num_seconds() as u32,
);

View File

@ -50,7 +50,7 @@ tokio-core = "^0.1"
tokio-tls = "^0.1"
# disables default features, i.e. openssl...
trust-dns = { version = "^0.13", path = "../client", default-features = false }
trust-dns-proto = { version = "^0.2", path = "../proto", default-features = false }
trust-dns-proto = { version = "^0.3", path = "../proto", default-features = false }
## Commented out until MTLS support is complete
# [target.'cfg(target_os = "linux")'.dependencies]

View File

@ -47,7 +47,7 @@ openssl = { version = "^0.9.8", features = ["v102", "v110"] }
tokio-core = "^0.1"
tokio-openssl = "^0.1"
trust-dns = { version = "^0.13", path = "../client" }
trust-dns-proto = { version = "^0.2", path = "../proto" }
trust-dns-proto = { version = "^0.3", path = "../proto" }
[dev-dependencies]
openssl = { version = "^0.9.8", features = ["v102", "v110"] }

View File

@ -1,6 +1,6 @@
[package]
name = "trust-dns-proto"
version = "0.2.0"
version = "0.3.0"
authors = ["Benjamin Fry <benjaminfry@me.com>"]
# A short blurb about the package. This is not rendered in any format when

View File

@ -25,7 +25,7 @@ impl Label {
/// These must only be ASCII, with unicode encoded to PunyCode, or other such transformation.
///
/// This uses the bytes as raw ascii values, with nothing escaped on the wire.
/// Generally users should use `from_utf8` or `from_ascii`
/// Generally users should use `from_str` or `from_ascii`
pub fn from_raw_bytes(bytes: &[u8]) -> ProtoResult<Self> {
if bytes.len() > 63 { return Err(ProtoErrorKind::Msg(format!("Label exceeds maximum length 63: {}", bytes.len())).into()) };
Ok(Label(Rc::from(bytes)))

View File

@ -366,10 +366,11 @@ impl Name {
/// # Examples
///
/// ```
/// use std::str::FromStr;
/// use trust_dns_proto::rr::domain::Name;
///
/// assert_eq!(Name::from_utf8("www.example.com.").unwrap().len(), 16);
/// assert_eq!(Name::from_utf8(".").unwrap().len(), 1);
/// assert_eq!(Name::from_str("www.example.com.").unwrap().len(), 16);
/// assert_eq!(Name::from_str(".").unwrap().len(), 1);
/// assert_eq!(Name::root().len(), 1);
/// ```
pub fn len(&self) -> usize {
@ -434,6 +435,7 @@ impl Name {
Self::from_encoded_str::<LabelEncAscii>(name.as_ref(), None)
}
// TODO: currently reserved to be private to the crate, due to confusion of IDNA vs. utf8 in https://tools.ietf.org/html/rfc6762#appendix-F
/// Will convert the string to a name using IDNA, punycode, to encode the UTF8 as necessary
///
/// When making names IDNA compatible, there is a side-effect of lowercasing the name.
@ -441,16 +443,19 @@ impl Name {
/// # Examples
///
/// ```
/// use std::str::FromStr;
/// use trust_dns_proto::rr::Name;
///
/// let bytes_name = Name::from_labels(vec!["WWW".as_bytes(), "example".as_bytes(), "COM".as_bytes()]).unwrap();
/// let utf8_name = Name::from_utf8("WWW.example.COM.").unwrap();
/// let lower_name = Name::from_utf8("www.example.com.").unwrap();
///
/// // from_str calls through to from_utf8
/// let utf8_name = Name::from_str("WWW.example.COM.").unwrap();
/// let lower_name = Name::from_str("www.example.com.").unwrap();
///
/// assert!(!bytes_name.eq_case(&utf8_name));
/// assert!(lower_name.eq_case(&utf8_name));
/// ```
pub fn from_utf8<S: AsRef<str>>(name: S) -> ProtoResult<Self> {
pub(crate) fn from_utf8<S: AsRef<str>>(name: S) -> ProtoResult<Self> {
Self::from_encoded_str::<LabelEncUtf8>(name.as_ref(), None)
}

View File

@ -3,6 +3,26 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## 0.8.0
### Changed
- Updated `trust-dns-proto` to `0.3`, which brings in better `Name` and `Label` impls
- Dropped LALRPOP `resolv.conf` parser in favor of the `resolv-conf` #335 (@cssivision & @little-dude)
- Improved message serialization #311 (@little-dude)
- Many serialization improvements #317
- Dependencies updated #334 (@oherrala)
### Added
- `Name` and `Label` now support idna, punycode, see `Name::from_str`
- Clippy added to build #304! (@neosilky)
- `from_system_conf` on now supported on Windows 32bit targets (previously just 64bit) #313 (@liranringel)
### Fixed
- octal escapes fixed in `Name` parsing #330
- `NULL` record type incorrectly valued at `0` to proper `10` #329 (@jannic)
## 0.7.0
### Changed

View File

@ -1,6 +1,6 @@
[package]
name = "trust-dns-resolver"
version = "0.7.0"
version = "0.8.0"
authors = ["Benjamin Fry <benjaminfry@me.com>"]
# A short blurb about the package. This is not rendered in any format when
@ -44,14 +44,14 @@ name = "trust_dns_resolver"
path = "src/lib.rs"
[dependencies]
resolv-conf = { version = "0.6.0", features = ["system"] }
error-chain = "0.1.12"
futures = "^0.1.17"
lazy_static = "^1.0"
log = "^0.4.1"
lru-cache = "^0.1.1"
resolv-conf = { version = "0.6.0", features = ["system"] }
tokio-core = "^0.1"
trust-dns-proto = { version = "^0.2", path = "../proto" }
trust-dns-proto = { version = "^0.3", path = "../proto" }
[target.'cfg(windows)'.dependencies]
ipconfig = { version = "^0.1.4" }

View File

@ -21,7 +21,7 @@
//!
//! ```toml
//! [dependency]
//! trust-dns-resolver = "^0.7"
//! trust-dns-resolver = "^0.8"
//! ```
//!
//! ## Extern the crate for usage in the library

View File

@ -7,6 +7,7 @@
//! Structs for creating and using a ResolverFuture
use std::net::IpAddr;
use std::str::FromStr;
use std::sync::{Arc, Mutex};
use futures::Future;
@ -251,7 +252,7 @@ impl ResolverFuture {
);
}
let name = match Name::from_utf8(host) {
let name = match Name::from_str(host) {
Ok(name) => name,
Err(err) => {
return InnerLookupIpFuture::error(self.client_cache.clone(), err);

View File

@ -50,7 +50,7 @@ tokio-core = "^0.1"
tokio-rustls = "^0.4"
# disables default features, i.e. openssl...
trust-dns = { version = "^0.13", path = "../client", default-features = false }
trust-dns-proto = { version = "^0.2", path = "../proto", default-features = false }
trust-dns-proto = { version = "^0.3", path = "../proto", default-features = false }
[dev-dependencies]
openssl = { version = "^0.9.8", features = ["v102", "v110"] }

View File

@ -77,7 +77,7 @@ time = "^0.1"
tokio-core = "^0.1"
toml = "^0.1"
trust-dns = { version = "^0.13", path = "../client" }
trust-dns-proto = { version = "^0.2", path = "../proto" }
trust-dns-proto = { version = "^0.3", path = "../proto" }
trust-dns-openssl = { version = "^0.2.0", path = "../openssl", optional = true }
[dev-dependencies]

View File

@ -324,7 +324,7 @@ _443._tcp.www.example.com. IN TLSA (
// IDNA name: rust-❤️-🦀 A 192.0.2.1
let idna_record: &Record = authority
.lookup(
&Name::from_utf8("rust-❤️-🦀.isi.edu").unwrap().into(),
&Name::from_str("rust-❤️-🦀.isi.edu").unwrap().into(),
RecordType::A,
false,
SupportedAlgorithms::new(),