mirror of
https://github.com/async-rs/async-std.git
synced 2025-06-16 11:11:32 +00:00
commit
bd297473cc
3 changed files with 23 additions and 2 deletions
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://book.async.rs/overview
|
||||||
|
|
||||||
## [Unreleased]
|
## [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
|
# [1.6.3] - 2020-07-31
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
|
@ -252,6 +252,6 @@ impl FromRawFd for UnixStream {
|
||||||
|
|
||||||
impl IntoRawFd for UnixStream {
|
impl IntoRawFd for UnixStream {
|
||||||
fn into_raw_fd(self) -> RawFd {
|
fn into_raw_fd(self) -> RawFd {
|
||||||
self.as_raw_fd()
|
(*self.watcher).get_ref().try_clone().unwrap().into_raw_fd()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
19
tests/uds.rs
19
tests/uds.rs
|
@ -27,7 +27,7 @@ fn send_recv() -> io::Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn into_raw_fd() -> io::Result<()> {
|
fn into_raw_fd_datagram() -> io::Result<()> {
|
||||||
use async_std::os::unix::io::{FromRawFd, IntoRawFd};
|
use async_std::os::unix::io::{FromRawFd, IntoRawFd};
|
||||||
task::block_on(async {
|
task::block_on(async {
|
||||||
let (socket1, socket2) = UnixDatagram::pair().unwrap();
|
let (socket1, socket2) = UnixDatagram::pair().unwrap();
|
||||||
|
@ -43,6 +43,23 @@ fn into_raw_fd() -> io::Result<()> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn into_raw_fd_stream() -> io::Result<()> {
|
||||||
|
use async_std::os::unix::io::{FromRawFd, IntoRawFd};
|
||||||
|
task::block_on(async {
|
||||||
|
let (mut socket1, socket2) = UnixStream::pair().unwrap();
|
||||||
|
socket1.write(JULIUS_CAESAR).await?;
|
||||||
|
|
||||||
|
let mut buf = vec![0; 1024];
|
||||||
|
|
||||||
|
let mut socket2 = unsafe { UnixStream::from_raw_fd(socket2.into_raw_fd()) };
|
||||||
|
let n = socket2.read(&mut buf).await?;
|
||||||
|
assert_eq!(&buf[..n], JULIUS_CAESAR);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const PING: &[u8] = b"ping";
|
const PING: &[u8] = b"ping";
|
||||||
const PONG: &[u8] = b"pong";
|
const PONG: &[u8] = b"pong";
|
||||||
const TEST_TIMEOUT: Duration = Duration::from_secs(3);
|
const TEST_TIMEOUT: Duration = Duration::from_secs(3);
|
||||||
|
|
Loading…
Reference in a new issue