diff --git a/vm-virtio/src/vsock/unix/mod.rs b/vm-virtio/src/vsock/unix/mod.rs index d1394f8ed..a7b2ea21c 100644 --- a/vm-virtio/src/vsock/unix/mod.rs +++ b/vm-virtio/src/vsock/unix/mod.rs @@ -28,12 +28,18 @@ mod defs { #[derive(Debug)] pub enum Error { + /// Error converting from UTF-8 + ConvertFromUTF8(std::str::Utf8Error), /// Error registering a new epoll-listening FD. EpollAdd(std::io::Error), /// Error creating an epoll FD. EpollFdCreate(std::io::Error), /// The host made an invalid vsock port connection request. InvalidPortRequest, + /// Error parsing integer. + ParseInteger(std::num::ParseIntError), + /// Error reading stream port. + ReadStreamPort(Box), /// Error accepting a new connection from the host-side Unix socket. UnixAccept(std::io::Error), /// Error binding to the host-side Unix socket. diff --git a/vm-virtio/src/vsock/unix/muxer.rs b/vm-virtio/src/vsock/unix/muxer.rs index 88af69d45..7862190f1 100644 --- a/vm-virtio/src/vsock/unix/muxer.rs +++ b/vm-virtio/src/vsock/unix/muxer.rs @@ -452,7 +452,7 @@ impl VsockMuxer { } let mut word_iter = std::str::from_utf8(&buf[..blen]) - .map_err(|_| Error::InvalidPortRequest)? + .map_err(Error::ConvertFromUTF8)? .split_whitespace(); word_iter @@ -466,8 +466,8 @@ impl VsockMuxer { } }) .and_then(|_| word_iter.next().ok_or(Error::InvalidPortRequest)) - .and_then(|word| word.parse::().map_err(|_| Error::InvalidPortRequest)) - .map_err(|_| Error::InvalidPortRequest) + .and_then(|word| word.parse::().map_err(Error::ParseInteger)) + .map_err(|e| Error::ReadStreamPort(Box::new(e))) } /// Add a new connection to the active connection pool.