Prechádzať zdrojové kódy

net/transport/tcp: handle peer address parsing error in tcp and tls listener

oars 9 mesiacov pred
rodič
commit
41f0a50de9
1 zmenil súbory, kde vykonal 18 pridanie a 2 odobranie
  1. 18 2
      src/net/transport/tcp.rs

+ 18 - 2
src/net/transport/tcp.rs

@@ -198,7 +198,15 @@ impl PtListener for SmolTcpListener {
             Err(e) => return Err(e),
         };
 
-        let url = Url::parse(&format!("tcp://{peer_addr}")).unwrap();
+        let url = match Url::parse(&format!("tcp://{peer_addr}")) {
+            Ok(v) => v,
+            Err(e) => {
+                return Err(io::Error::new(
+                    io::ErrorKind::InvalidData,
+                    format!("Invalid peer address '{peer_addr}': {e}"),
+                ))
+            }
+        };
         Ok((Box::new(stream), url))
     }
 }
@@ -216,7 +224,15 @@ impl PtListener for (TlsAcceptor, SmolTcpListener) {
             Err(e) => return Err(e),
         };
 
-        let url = Url::parse(&format!("tcp+tls://{peer_addr}")).unwrap();
+        let url = match Url::parse(&format!("tcp+tls://{peer_addr}")) {
+            Ok(v) => v,
+            Err(e) => {
+                return Err(io::Error::new(
+                    io::ErrorKind::InvalidData,
+                    format!("Invalid peer address '{peer_addr}': {e}"),
+                ))
+            }
+        };
 
         Ok((Box::new(TlsStream::Server(stream)), url))
     }