mirror of
https://github.com/async-rs/async-std.git
synced 2025-01-16 02:39:55 +00:00
os/unix/stream: stop into_raw_fd from closing the fd
`UnixStream::into_raw_fd` calls `as_raw_fd`, which doesn't take the ownership of the file descriptor, so the file descriptor is closed when `self` is dropped upon returning from the function. Because `UnixStream` uses a `Arc` to support Clone, there could be an arbitrary number of instances around. We cannot take ownership of the descriptor from all of the instances. Therefore we have no choice but to duplicate the file descriptor and return that. Fixes #855 Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
59874d639c
commit
b0ac73cb57
2 changed files with 5 additions and 1 deletions
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://book.async.rs/overview
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
## Fixed
|
||||
|
||||
- Ensure `UnixStream::into_raw_fd` doesn't close the file descriptor ([#855](https://github.com/async-rs/async-std/issues/855))
|
||||
|
||||
# [1.6.3] - 2020-07-31
|
||||
|
||||
## Added
|
||||
|
|
|
@ -252,6 +252,6 @@ impl FromRawFd for UnixStream {
|
|||
|
||||
impl IntoRawFd for UnixStream {
|
||||
fn into_raw_fd(self) -> RawFd {
|
||||
self.as_raw_fd()
|
||||
(*self.watcher).get_ref().try_clone().unwrap().into_raw_fd()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue