diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-02-05 16:09:59 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-02-05 18:47:49 -0800 |
| commit | 7b81cc09c14920f3a39362a22ed3a747eb2d8527 (patch) | |
| tree | a36c42ed600512127f616133cd9e8133cba3fdd9 /src/libstd/io/net | |
| parent | 6aad3bf944da209d1852c51144ba584de400a10c (diff) | |
| download | rust-7b81cc09c14920f3a39362a22ed3a747eb2d8527.tar.gz rust-7b81cc09c14920f3a39362a22ed3a747eb2d8527.zip | |
Make a double-write UDP test more robust
I have a hunch this just deadlocked the windows bots. Due to UDP being a lossy protocol, I don't think we can guarantee that the server can receive both packets, so just listen for one of them.
Diffstat (limited to 'src/libstd/io/net')
| -rw-r--r-- | src/libstd/io/net/udp.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/libstd/io/net/udp.rs b/src/libstd/io/net/udp.rs index 3c02f563847..ae99101e179 100644 --- a/src/libstd/io/net/udp.rs +++ b/src/libstd/io/net/udp.rs @@ -335,17 +335,18 @@ mod test { let sock2 = UdpSocket::bind(addr2).unwrap(); let (p, c) = SharedChan::new(); + let (serv_port, serv_chan) = Chan::new(); spawn(proc() { let mut sock2 = sock2; let mut buf = [0, 1]; - for _ in p.iter() { - match sock2.recvfrom(buf) { - Ok(..) => {} - Err(e) => fail!("failed receive: {}", e), - } + p.recv(); + match sock2.recvfrom(buf) { + Ok(..) => {} + Err(e) => fail!("failed receive: {}", e), } + serv_chan.send(()); }); let sock3 = sock1.clone(); @@ -355,16 +356,18 @@ mod test { spawn(proc() { let mut sock3 = sock3; match sock3.sendto([1], addr2) { - Ok(..) => c2.send(()), + Ok(..) => { let _ = c2.try_send(()); } Err(..) => {} } done.send(()); }); match sock1.sendto([2], addr2) { - Ok(..) => c.send(()), + Ok(..) => { let _ = c.try_send(()); } Err(..) => {} } + drop(c); p.recv(); + serv_port.recv(); }) } |
