From e34e7a4d79f356c2fe0e31f620f9eba44eee1b21 Mon Sep 17 00:00:00 2001 From: Rudra Arora Date: Mon, 10 Jul 2023 12:53:09 +0100 Subject: [PATCH] DNS resolve TryFrom &str implementation --- library/std/src/sys/wasix/net.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/library/std/src/sys/wasix/net.rs b/library/std/src/sys/wasix/net.rs index 37e5432697c8c..152212250191c 100644 --- a/library/std/src/sys/wasix/net.rs +++ b/library/std/src/sys/wasix/net.rs @@ -1332,7 +1332,19 @@ impl<'a> TryFrom<&'a str> for LookupHost { type Error = io::Error; fn try_from(v: &'a str) -> io::Result { - TryFrom::try_from((v, 0u16)) + macro_rules! try_opt { + ($e:expr, $msg:expr) => { + match $e { + Some(r) => r, + None => return Err(io::const_io_error!(io::ErrorKind::InvalidInput, $msg)), + } + }; + } + + // split the string by ':' and convert the second part to u16 + let (host, port_str) = try_opt!(v.rsplit_once(':'), "invalid socket address"); + let port: u16 = try_opt!(port_str.parse().ok(), "invalid port value"); + TryFrom::try_from((host, port)) } }