@@ -55,7 +55,7 @@ pub fn test_timestamping() {
55
55
. unwrap ( ) ;
56
56
57
57
let mut ts = None ;
58
- for c in recv. cmsgs ( ) {
58
+ for c in recv. cmsgs ( ) . unwrap ( ) {
59
59
if let ControlMessageOwned :: ScmTimestampsns ( timestamps) = c {
60
60
ts = Some ( timestamps. system ) ;
61
61
}
@@ -117,7 +117,7 @@ pub fn test_timestamping_realtime() {
117
117
. unwrap ( ) ;
118
118
119
119
let mut ts = None ;
120
- for c in recv. cmsgs ( ) {
120
+ for c in recv. cmsgs ( ) . unwrap ( ) {
121
121
if let ControlMessageOwned :: ScmRealtime ( timeval) = c {
122
122
ts = Some ( timeval) ;
123
123
}
@@ -179,7 +179,7 @@ pub fn test_timestamping_monotonic() {
179
179
. unwrap ( ) ;
180
180
181
181
let mut ts = None ;
182
- for c in recv. cmsgs ( ) {
182
+ for c in recv. cmsgs ( ) . unwrap ( ) {
183
183
if let ControlMessageOwned :: ScmMonotonic ( timeval) = c {
184
184
ts = Some ( timeval) ;
185
185
}
@@ -889,7 +889,7 @@ pub fn test_scm_rights() {
889
889
)
890
890
. unwrap ( ) ;
891
891
892
- for cmsg in msg. cmsgs ( ) {
892
+ for cmsg in msg. cmsgs ( ) . unwrap ( ) {
893
893
if let ControlMessageOwned :: ScmRights ( fd) = cmsg {
894
894
assert_eq ! ( received_r, None ) ;
895
895
assert_eq ! ( fd. len( ) , 1 ) ;
@@ -1330,7 +1330,7 @@ fn test_scm_rights_single_cmsg_multiple_fds() {
1330
1330
. flags
1331
1331
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
1332
1332
1333
- let mut cmsgs = msg. cmsgs ( ) ;
1333
+ let mut cmsgs = msg. cmsgs ( ) . unwrap ( ) ;
1334
1334
match cmsgs. next ( ) {
1335
1335
Some ( ControlMessageOwned :: ScmRights ( fds) ) => {
1336
1336
assert_eq ! (
@@ -1399,7 +1399,7 @@ pub fn test_sendmsg_empty_cmsgs() {
1399
1399
)
1400
1400
. unwrap ( ) ;
1401
1401
1402
- if msg. cmsgs ( ) . next ( ) . is_some ( ) {
1402
+ if msg. cmsgs ( ) . unwrap ( ) . next ( ) . is_some ( ) {
1403
1403
panic ! ( "unexpected cmsg" ) ;
1404
1404
}
1405
1405
assert ! ( !msg
@@ -1466,7 +1466,7 @@ fn test_scm_credentials() {
1466
1466
. unwrap ( ) ;
1467
1467
let mut received_cred = None ;
1468
1468
1469
- for cmsg in msg. cmsgs ( ) {
1469
+ for cmsg in msg. cmsgs ( ) . unwrap ( ) {
1470
1470
let cred = match cmsg {
1471
1471
#[ cfg( linux_android) ]
1472
1472
ControlMessageOwned :: ScmCredentials ( cred) => cred,
@@ -1497,7 +1497,7 @@ fn test_scm_credentials() {
1497
1497
#[ test]
1498
1498
fn test_scm_credentials_and_rights ( ) {
1499
1499
let space = cmsg_space ! ( libc:: ucred, RawFd ) ;
1500
- test_impl_scm_credentials_and_rights ( space) ;
1500
+ test_impl_scm_credentials_and_rights ( space) . unwrap ( ) ;
1501
1501
}
1502
1502
1503
1503
/// Ensure that passing a an oversized control message buffer to recvmsg
@@ -1509,11 +1509,23 @@ fn test_scm_credentials_and_rights() {
1509
1509
#[ test]
1510
1510
fn test_too_large_cmsgspace ( ) {
1511
1511
let space = vec ! [ 0u8 ; 1024 ] ;
1512
- test_impl_scm_credentials_and_rights ( space) ;
1512
+ test_impl_scm_credentials_and_rights ( space) . unwrap ( ) ;
1513
1513
}
1514
1514
1515
1515
#[ cfg( linux_android) ]
1516
- fn test_impl_scm_credentials_and_rights ( mut space : Vec < u8 > ) {
1516
+ #[ test]
1517
+ fn test_too_small_cmsgspace ( ) {
1518
+ let space = vec ! [ 0u8 ; 4 ] ;
1519
+ assert_eq ! (
1520
+ test_impl_scm_credentials_and_rights( space) ,
1521
+ Err ( nix:: errno:: Errno :: ENOBUFS )
1522
+ ) ;
1523
+ }
1524
+
1525
+ #[ cfg( linux_android) ]
1526
+ fn test_impl_scm_credentials_and_rights (
1527
+ mut space : Vec < u8 > ,
1528
+ ) -> Result < ( ) , nix:: errno:: Errno > {
1517
1529
use libc:: ucred;
1518
1530
use nix:: sys:: socket:: sockopt:: PassCred ;
1519
1531
use nix:: sys:: socket:: {
@@ -1573,9 +1585,9 @@ fn test_impl_scm_credentials_and_rights(mut space: Vec<u8>) {
1573
1585
. unwrap ( ) ;
1574
1586
let mut received_cred = None ;
1575
1587
1576
- assert_eq ! ( msg. cmsgs( ) . count( ) , 2 , "expected 2 cmsgs" ) ;
1588
+ assert_eq ! ( msg. cmsgs( ) ? . count( ) , 2 , "expected 2 cmsgs" ) ;
1577
1589
1578
- for cmsg in msg. cmsgs ( ) {
1590
+ for cmsg in msg. cmsgs ( ) ? {
1579
1591
match cmsg {
1580
1592
ControlMessageOwned :: ScmRights ( fds) => {
1581
1593
assert_eq ! ( received_r, None , "already received fd" ) ;
@@ -1606,6 +1618,8 @@ fn test_impl_scm_credentials_and_rights(mut space: Vec<u8>) {
1606
1618
read ( received_r. as_raw_fd ( ) , & mut buf) . unwrap ( ) ;
1607
1619
assert_eq ! ( & buf[ ..] , b"world" ) ;
1608
1620
close ( received_r) . unwrap ( ) ;
1621
+
1622
+ Ok ( ( ) )
1609
1623
}
1610
1624
1611
1625
// Test creating and using named unix domain sockets
@@ -1837,7 +1851,7 @@ pub fn test_recv_ipv4pktinfo() {
1837
1851
. flags
1838
1852
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
1839
1853
1840
- let mut cmsgs = msg. cmsgs ( ) ;
1854
+ let mut cmsgs = msg. cmsgs ( ) . unwrap ( ) ;
1841
1855
if let Some ( ControlMessageOwned :: Ipv4PacketInfo ( pktinfo) ) = cmsgs. next ( )
1842
1856
{
1843
1857
let i = if_nametoindex ( lo_name. as_bytes ( ) ) . expect ( "if_nametoindex" ) ;
@@ -1929,11 +1943,11 @@ pub fn test_recvif() {
1929
1943
assert ! ( !msg
1930
1944
. flags
1931
1945
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
1932
- assert_eq ! ( msg. cmsgs( ) . count( ) , 2 , "expected 2 cmsgs" ) ;
1946
+ assert_eq ! ( msg. cmsgs( ) . unwrap ( ) . count( ) , 2 , "expected 2 cmsgs" ) ;
1933
1947
1934
1948
let mut rx_recvif = false ;
1935
1949
let mut rx_recvdstaddr = false ;
1936
- for cmsg in msg. cmsgs ( ) {
1950
+ for cmsg in msg. cmsgs ( ) . unwrap ( ) {
1937
1951
match cmsg {
1938
1952
ControlMessageOwned :: Ipv4RecvIf ( dl) => {
1939
1953
rx_recvif = true ;
@@ -2027,10 +2041,10 @@ pub fn test_recvif_ipv4() {
2027
2041
assert ! ( !msg
2028
2042
. flags
2029
2043
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
2030
- assert_eq ! ( msg. cmsgs( ) . count( ) , 1 , "expected 1 cmsgs" ) ;
2044
+ assert_eq ! ( msg. cmsgs( ) . unwrap ( ) . count( ) , 1 , "expected 1 cmsgs" ) ;
2031
2045
2032
2046
let mut rx_recvorigdstaddr = false ;
2033
- for cmsg in msg. cmsgs ( ) {
2047
+ for cmsg in msg. cmsgs ( ) . unwrap ( ) {
2034
2048
match cmsg {
2035
2049
ControlMessageOwned :: Ipv4OrigDstAddr ( addr) => {
2036
2050
rx_recvorigdstaddr = true ;
@@ -2113,10 +2127,10 @@ pub fn test_recvif_ipv6() {
2113
2127
assert ! ( !msg
2114
2128
. flags
2115
2129
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
2116
- assert_eq ! ( msg. cmsgs( ) . count( ) , 1 , "expected 1 cmsgs" ) ;
2130
+ assert_eq ! ( msg. cmsgs( ) . unwrap ( ) . count( ) , 1 , "expected 1 cmsgs" ) ;
2117
2131
2118
2132
let mut rx_recvorigdstaddr = false ;
2119
- for cmsg in msg. cmsgs ( ) {
2133
+ for cmsg in msg. cmsgs ( ) . unwrap ( ) {
2120
2134
match cmsg {
2121
2135
ControlMessageOwned :: Ipv6OrigDstAddr ( addr) => {
2122
2136
rx_recvorigdstaddr = true ;
@@ -2214,7 +2228,7 @@ pub fn test_recv_ipv6pktinfo() {
2214
2228
. flags
2215
2229
. intersects( MsgFlags :: MSG_TRUNC | MsgFlags :: MSG_CTRUNC ) ) ;
2216
2230
2217
- let mut cmsgs = msg. cmsgs ( ) ;
2231
+ let mut cmsgs = msg. cmsgs ( ) . unwrap ( ) ;
2218
2232
if let Some ( ControlMessageOwned :: Ipv6PacketInfo ( pktinfo) ) = cmsgs. next ( )
2219
2233
{
2220
2234
let i = if_nametoindex ( lo_name. as_bytes ( ) ) . expect ( "if_nametoindex" ) ;
@@ -2357,7 +2371,7 @@ fn test_recvmsg_timestampns() {
2357
2371
flags,
2358
2372
)
2359
2373
. unwrap ( ) ;
2360
- let rtime = match r. cmsgs ( ) . next ( ) {
2374
+ let rtime = match r. cmsgs ( ) . unwrap ( ) . next ( ) {
2361
2375
Some ( ControlMessageOwned :: ScmTimestampns ( rtime) ) => rtime,
2362
2376
Some ( _) => panic ! ( "Unexpected control message" ) ,
2363
2377
None => panic ! ( "No control message" ) ,
@@ -2418,7 +2432,7 @@ fn test_recvmmsg_timestampns() {
2418
2432
)
2419
2433
. unwrap ( )
2420
2434
. collect ( ) ;
2421
- let rtime = match r[ 0 ] . cmsgs ( ) . next ( ) {
2435
+ let rtime = match r[ 0 ] . cmsgs ( ) . unwrap ( ) . next ( ) {
2422
2436
Some ( ControlMessageOwned :: ScmTimestampns ( rtime) ) => rtime,
2423
2437
Some ( _) => panic ! ( "Unexpected control message" ) ,
2424
2438
None => panic ! ( "No control message" ) ,
@@ -2508,7 +2522,7 @@ fn test_recvmsg_rxq_ovfl() {
2508
2522
MsgFlags :: MSG_DONTWAIT ,
2509
2523
) {
2510
2524
Ok ( r) => {
2511
- drop_counter = match r. cmsgs ( ) . next ( ) {
2525
+ drop_counter = match r. cmsgs ( ) . unwrap ( ) . next ( ) {
2512
2526
Some ( ControlMessageOwned :: RxqOvfl ( drop_counter) ) => {
2513
2527
drop_counter
2514
2528
}
@@ -2687,7 +2701,7 @@ mod linux_errqueue {
2687
2701
assert_eq ! ( msg. address, Some ( sock_addr) ) ;
2688
2702
2689
2703
// Check for expected control message.
2690
- let ext_err = match msg. cmsgs ( ) . next ( ) {
2704
+ let ext_err = match msg. cmsgs ( ) . unwrap ( ) . next ( ) {
2691
2705
Some ( cmsg) => testf ( & cmsg) ,
2692
2706
None => panic ! ( "No control message" ) ,
2693
2707
} ;
@@ -2878,7 +2892,7 @@ fn test_recvmm2() -> nix::Result<()> {
2878
2892
#[ cfg( not( any( qemu, target_arch = "aarch64" ) ) ) ]
2879
2893
let mut saw_time = false ;
2880
2894
let mut recvd = 0 ;
2881
- for cmsg in rmsg. cmsgs ( ) {
2895
+ for cmsg in rmsg. cmsgs ( ) . unwrap ( ) {
2882
2896
if let ControlMessageOwned :: ScmTimestampsns ( timestamps) = cmsg {
2883
2897
let ts = timestamps. system ;
2884
2898
0 commit comments