@@ -22,7 +22,7 @@ use crate::ln::msgs::DecodeError;
22
22
use crate :: onion_message:: messenger:: { MessageSendInstructions , Responder , ResponseInstruction } ;
23
23
use crate :: onion_message:: packet:: OnionMessageContents ;
24
24
use crate :: prelude:: * ;
25
- use crate :: util:: ser:: { Readable , ReadableArgs , Writeable , Writer } ;
25
+ use crate :: util:: ser:: { Hostname , Readable , ReadableArgs , Writeable , Writer } ;
26
26
27
27
/// A handler for an [`OnionMessage`] containing a DNS(SEC) query or a DNSSEC proof
28
28
///
@@ -99,29 +99,16 @@ impl Writeable for DNSResolverMessage {
99
99
}
100
100
}
101
101
102
- fn read_byte_len_ascii_string < R : io:: Read > ( buffer : & mut R ) -> Result < String , DecodeError > {
103
- let len: u8 = Readable :: read ( buffer) ?;
104
- let mut bytes = [ 0 ; 255 ] ;
105
- buffer. read_exact ( & mut bytes[ ..len as usize ] ) ?;
106
- if bytes[ ..len as usize ] . iter ( ) . any ( |b| * b < 0x20 || * b > 0x7e ) {
107
- // If the bytes are not entirely in the printable ASCII range, fail
108
- return Err ( DecodeError :: InvalidValue ) ;
109
- }
110
- let s =
111
- String :: from_utf8 ( bytes[ ..len as usize ] . to_vec ( ) ) . map_err ( |_| DecodeError :: InvalidValue ) ?;
112
- Ok ( s)
113
- }
114
-
115
102
impl ReadableArgs < u64 > for DNSResolverMessage {
116
103
fn read < R : io:: Read > ( r : & mut R , message_type : u64 ) -> Result < Self , DecodeError > {
117
104
match message_type {
118
105
DNSSEC_QUERY_TYPE => {
119
- let s = read_byte_len_ascii_string ( r) ?;
106
+ let s = Hostname :: read ( r) ?;
120
107
let name = s. try_into ( ) . map_err ( |_| DecodeError :: InvalidValue ) ?;
121
108
Ok ( DNSResolverMessage :: DNSSECQuery ( DNSSECQuery ( name) ) )
122
109
} ,
123
110
DNSSEC_PROOF_TYPE => {
124
- let s = read_byte_len_ascii_string ( r) ?;
111
+ let s = Hostname :: read ( r) ?;
125
112
let name = s. try_into ( ) . map_err ( |_| DecodeError :: InvalidValue ) ?;
126
113
let proof = Readable :: read ( r) ?;
127
114
Ok ( DNSResolverMessage :: DNSSECProof ( DNSSECProof { name, proof } ) )
0 commit comments