Return error if timeout is zero-Duration on Redox.
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use cmp;
|
use cmp;
|
||||||
use io::{Error, ErrorKind, Result};
|
use io::{self, Error, ErrorKind, Result};
|
||||||
use mem;
|
use mem;
|
||||||
use net::{SocketAddr, Shutdown};
|
use net::{SocketAddr, Shutdown};
|
||||||
use path::Path;
|
use path::Path;
|
||||||
@@ -130,6 +130,10 @@ impl TcpStream {
|
|||||||
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
||||||
let file = self.0.dup(b"read_timeout")?;
|
let file = self.0.dup(b"read_timeout")?;
|
||||||
if let Some(duration) = duration_option {
|
if let Some(duration) = duration_option {
|
||||||
|
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
|
||||||
|
return Err(io::Error::new(io::ErrorKind::InvalidInput,
|
||||||
|
"cannot set a 0 duration timeout"));
|
||||||
|
}
|
||||||
file.write(&TimeSpec {
|
file.write(&TimeSpec {
|
||||||
tv_sec: duration.as_secs() as i64,
|
tv_sec: duration.as_secs() as i64,
|
||||||
tv_nsec: duration.subsec_nanos() as i32
|
tv_nsec: duration.subsec_nanos() as i32
|
||||||
@@ -143,6 +147,10 @@ impl TcpStream {
|
|||||||
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
||||||
let file = self.0.dup(b"write_timeout")?;
|
let file = self.0.dup(b"write_timeout")?;
|
||||||
if let Some(duration) = duration_option {
|
if let Some(duration) = duration_option {
|
||||||
|
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
|
||||||
|
return Err(io::Error::new(io::ErrorKind::InvalidInput,
|
||||||
|
"cannot set a 0 duration timeout"));
|
||||||
|
}
|
||||||
file.write(&TimeSpec {
|
file.write(&TimeSpec {
|
||||||
tv_sec: duration.as_secs() as i64,
|
tv_sec: duration.as_secs() as i64,
|
||||||
tv_nsec: duration.subsec_nanos() as i32
|
tv_nsec: duration.subsec_nanos() as i32
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
use cell::UnsafeCell;
|
use cell::UnsafeCell;
|
||||||
use cmp;
|
use cmp;
|
||||||
use io::{Error, ErrorKind, Result};
|
use io::{self, Error, ErrorKind, Result};
|
||||||
use mem;
|
use mem;
|
||||||
use net::{SocketAddr, Ipv4Addr, Ipv6Addr};
|
use net::{SocketAddr, Ipv4Addr, Ipv6Addr};
|
||||||
use path::Path;
|
use path::Path;
|
||||||
@@ -179,6 +179,10 @@ impl UdpSocket {
|
|||||||
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
||||||
let file = self.0.dup(b"read_timeout")?;
|
let file = self.0.dup(b"read_timeout")?;
|
||||||
if let Some(duration) = duration_option {
|
if let Some(duration) = duration_option {
|
||||||
|
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
|
||||||
|
return Err(io::Error::new(io::ErrorKind::InvalidInput,
|
||||||
|
"cannot set a 0 duration timeout"));
|
||||||
|
}
|
||||||
file.write(&TimeSpec {
|
file.write(&TimeSpec {
|
||||||
tv_sec: duration.as_secs() as i64,
|
tv_sec: duration.as_secs() as i64,
|
||||||
tv_nsec: duration.subsec_nanos() as i32
|
tv_nsec: duration.subsec_nanos() as i32
|
||||||
@@ -192,6 +196,10 @@ impl UdpSocket {
|
|||||||
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
|
||||||
let file = self.0.dup(b"write_timeout")?;
|
let file = self.0.dup(b"write_timeout")?;
|
||||||
if let Some(duration) = duration_option {
|
if let Some(duration) = duration_option {
|
||||||
|
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
|
||||||
|
return Err(io::Error::new(io::ErrorKind::InvalidInput,
|
||||||
|
"cannot set a 0 duration timeout"));
|
||||||
|
}
|
||||||
file.write(&TimeSpec {
|
file.write(&TimeSpec {
|
||||||
tv_sec: duration.as_secs() as i64,
|
tv_sec: duration.as_secs() as i64,
|
||||||
tv_nsec: duration.subsec_nanos() as i32
|
tv_nsec: duration.subsec_nanos() as i32
|
||||||
|
|||||||
Reference in New Issue
Block a user