diff options
| author | bors <bors@rust-lang.org> | 2014-02-05 22:46:33 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-02-05 22:46:33 -0800 |
| commit | 8dc06802b241ea30a8aadca1f8451a646f2bc3c0 (patch) | |
| tree | 36637b8b21209a35a856c32a5c7b789c0dd7e4e5 | |
| parent | 9a672f98e5a7bef086cb56420b095daeeb7ef1ea (diff) | |
| parent | 7b81cc09c14920f3a39362a22ed3a747eb2d8527 (diff) | |
| download | rust-8dc06802b241ea30a8aadca1f8451a646f2bc3c0.tar.gz rust-8dc06802b241ea30a8aadca1f8451a646f2bc3c0.zip | |
auto merge of #12054 : alexcrichton/rust/less-flaky-udp, r=brson
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.
| -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(); }) } |
