Skip to content

Commit a554a2f

Browse files
committed
Return error if timeout is zero-Duration on Redox.
1 parent d17d645 commit a554a2f

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/libstd/sys/redox/net/tcp.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use cmp;
12-
use io::{Error, ErrorKind, Result};
12+
use io::{self, Error, ErrorKind, Result};
1313
use mem;
1414
use net::{SocketAddr, Shutdown};
1515
use path::Path;
@@ -130,6 +130,10 @@ impl TcpStream {
130130
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
131131
let file = self.0.dup(b"read_timeout")?;
132132
if let Some(duration) = duration_option {
133+
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
134+
return Err(io::Error::new(io::ErrorKind::InvalidInput,
135+
"cannot set a 0 duration timeout"));
136+
}
133137
file.write(&TimeSpec {
134138
tv_sec: duration.as_secs() as i64,
135139
tv_nsec: duration.subsec_nanos() as i32
@@ -143,6 +147,10 @@ impl TcpStream {
143147
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
144148
let file = self.0.dup(b"write_timeout")?;
145149
if let Some(duration) = duration_option {
150+
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
151+
return Err(io::Error::new(io::ErrorKind::InvalidInput,
152+
"cannot set a 0 duration timeout"));
153+
}
146154
file.write(&TimeSpec {
147155
tv_sec: duration.as_secs() as i64,
148156
tv_nsec: duration.subsec_nanos() as i32

src/libstd/sys/redox/net/udp.rs

+9-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use cell::UnsafeCell;
1212
use cmp;
13-
use io::{Error, ErrorKind, Result};
13+
use io::{self, Error, ErrorKind, Result};
1414
use mem;
1515
use net::{SocketAddr, Ipv4Addr, Ipv6Addr};
1616
use path::Path;
@@ -179,6 +179,10 @@ impl UdpSocket {
179179
pub fn set_read_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
180180
let file = self.0.dup(b"read_timeout")?;
181181
if let Some(duration) = duration_option {
182+
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
183+
return Err(io::Error::new(io::ErrorKind::InvalidInput,
184+
"cannot set a 0 duration timeout"));
185+
}
182186
file.write(&TimeSpec {
183187
tv_sec: duration.as_secs() as i64,
184188
tv_nsec: duration.subsec_nanos() as i32
@@ -192,6 +196,10 @@ impl UdpSocket {
192196
pub fn set_write_timeout(&self, duration_option: Option<Duration>) -> Result<()> {
193197
let file = self.0.dup(b"write_timeout")?;
194198
if let Some(duration) = duration_option {
199+
if duration.as_secs() == 0 && duration.subsec_nanos() == 0 {
200+
return Err(io::Error::new(io::ErrorKind::InvalidInput,
201+
"cannot set a 0 duration timeout"));
202+
}
195203
file.write(&TimeSpec {
196204
tv_sec: duration.as_secs() as i64,
197205
tv_nsec: duration.subsec_nanos() as i32

0 commit comments

Comments
 (0)