@@ -1410,7 +1410,7 @@ impl IntoRawFd for UnixDatagram {
1410
1410
#[ cfg( all( test, not( target_os = "emscripten" ) ) ) ]
1411
1411
mod test {
1412
1412
use thread;
1413
- use io;
1413
+ use io:: { self , ErrorKind } ;
1414
1414
use io:: prelude:: * ;
1415
1415
use time:: Duration ;
1416
1416
use sys_common:: io:: test:: tmpdir;
@@ -1613,6 +1613,27 @@ mod test {
1613
1613
assert ! ( kind == io:: ErrorKind :: WouldBlock || kind == io:: ErrorKind :: TimedOut ) ;
1614
1614
}
1615
1615
1616
+ // Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
1617
+ // when passed zero Durations
1618
+ #[ test]
1619
+ fn test_unix_stream_timeout_zero_duration ( ) {
1620
+ let dir = tmpdir ( ) ;
1621
+ let socket_path = dir. path ( ) . join ( "sock" ) ;
1622
+
1623
+ let listener = or_panic ! ( UnixListener :: bind( & socket_path) ) ;
1624
+ let stream = or_panic ! ( UnixStream :: connect( & socket_path) ) ;
1625
+
1626
+ let result = stream. set_write_timeout ( Some ( Duration :: new ( 0 , 0 ) ) ) ;
1627
+ let err = result. unwrap_err ( ) ;
1628
+ assert_eq ! ( err. kind( ) , ErrorKind :: InvalidInput ) ;
1629
+
1630
+ let result = stream. set_read_timeout ( Some ( Duration :: new ( 0 , 0 ) ) ) ;
1631
+ let err = result. unwrap_err ( ) ;
1632
+ assert_eq ! ( err. kind( ) , ErrorKind :: InvalidInput ) ;
1633
+
1634
+ drop ( listener) ;
1635
+ }
1636
+
1616
1637
#[ test]
1617
1638
fn test_unix_datagram ( ) {
1618
1639
let dir = tmpdir ( ) ;
@@ -1712,6 +1733,24 @@ mod test {
1712
1733
thread. join ( ) . unwrap ( ) ;
1713
1734
}
1714
1735
1736
+ // Ensure the `set_read_timeout` and `set_write_timeout` calls return errors
1737
+ // when passed zero Durations
1738
+ #[ test]
1739
+ fn test_unix_datagram_timeout_zero_duration ( ) {
1740
+ let dir = tmpdir ( ) ;
1741
+ let path = dir. path ( ) . join ( "sock" ) ;
1742
+
1743
+ let datagram = or_panic ! ( UnixDatagram :: bind( & path) ) ;
1744
+
1745
+ let result = datagram. set_write_timeout ( Some ( Duration :: new ( 0 , 0 ) ) ) ;
1746
+ let err = result. unwrap_err ( ) ;
1747
+ assert_eq ! ( err. kind( ) , ErrorKind :: InvalidInput ) ;
1748
+
1749
+ let result = datagram. set_read_timeout ( Some ( Duration :: new ( 0 , 0 ) ) ) ;
1750
+ let err = result. unwrap_err ( ) ;
1751
+ assert_eq ! ( err. kind( ) , ErrorKind :: InvalidInput ) ;
1752
+ }
1753
+
1715
1754
#[ test]
1716
1755
fn abstract_namespace_not_allowed ( ) {
1717
1756
assert ! ( UnixStream :: connect( "\0 asdf" ) . is_err( ) ) ;
0 commit comments