diff options
Diffstat (limited to 'src/vhost_user/sock_ctrl_msg.rs')
-rw-r--r-- | src/vhost_user/sock_ctrl_msg.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/vhost_user/sock_ctrl_msg.rs b/src/vhost_user/sock_ctrl_msg.rs index 76d760f..bfc6d53 100644 --- a/src/vhost_user/sock_ctrl_msg.rs +++ b/src/vhost_user/sock_ctrl_msg.rs @@ -182,8 +182,9 @@ fn raw_recvmsg(fd: RawFd, iovecs: &mut [iovec], in_fds: &mut [RawFd]) -> Result< return Err(Error::last()); } + // When the connection is closed recvmsg() doesn't give an explicit error if total_read == 0 && msg.msg_controllen < size_of::<cmsghdr>() { - return Ok((0, 0)); + return Err(Error::new(libc::ECONNRESET)); } let mut cmsg_ptr = msg.msg_control as *mut cmsghdr; |