8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
- // ignore-linux see joyent/libuv#1189
12
11
// ignore-android needs extra network permissions
13
12
// ignore-openbsd system ulimit (Too many open files)
14
13
// ignore-bitrig system ulimit (Too many open files)
15
- // exec-env:RUST_LOG=debug
16
-
17
- #![ feature( rustc_private, libc, old_io, io, std_misc) ]
18
- #![ allow( deprecated, unused_must_use) ]
19
-
20
- #[ macro_use]
21
- extern crate log;
22
- extern crate libc;
23
14
15
+ use std:: io:: prelude:: * ;
16
+ use std:: net:: { TcpListener , TcpStream } ;
17
+ use std:: process;
24
18
use std:: sync:: mpsc:: channel;
25
- use std:: old_io:: net:: tcp:: { TcpListener , TcpStream } ;
26
- use std:: old_io:: { Acceptor , Listener , Reader , Writer } ;
27
19
use std:: thread:: { self , Builder } ;
28
- use std:: time:: Duration ;
29
20
30
21
fn main ( ) {
31
22
// This test has a chance to time out, try to not let it time out
32
23
thread:: spawn ( move || -> ( ) {
33
- use std:: old_io:: timer;
34
- timer:: sleep ( Duration :: milliseconds ( 30 * 1000 ) ) ;
35
- println ! ( "timed out!" ) ;
36
- unsafe { libc:: exit ( 1 ) }
24
+ thread:: sleep_ms ( 30 * 1000 ) ;
25
+ process:: exit ( 1 ) ;
37
26
} ) ;
38
27
39
- let ( tx, rx) = channel ( ) ;
28
+ let mut listener = TcpListener :: bind ( "127.0.0.1:0" ) . unwrap ( ) ;
29
+ let addr = listener. local_addr ( ) . unwrap ( ) ;
40
30
thread:: spawn ( move || -> ( ) {
41
- let mut listener = TcpListener :: bind ( "127.0.0.1:0" ) . unwrap ( ) ;
42
- tx. send ( listener. socket_name ( ) . unwrap ( ) ) . unwrap ( ) ;
43
- let mut acceptor = listener. listen ( ) ;
44
31
loop {
45
- let mut stream = match acceptor. accept ( ) {
46
- Ok ( stream) => stream,
47
- Err ( error) => {
48
- debug ! ( "accept panicked: {}" , error) ;
49
- continue ;
50
- }
32
+ let mut stream = match listener. accept ( ) {
33
+ Ok ( stream) => stream. 0 ,
34
+ Err ( error) => continue ,
51
35
} ;
52
- stream. read_byte ( ) ;
36
+ stream. read ( & mut [ 0 ] ) ;
53
37
stream. write ( & [ 2 ] ) ;
54
38
}
55
39
} ) ;
56
- let addr = rx. recv ( ) . unwrap ( ) ;
57
40
58
41
let ( tx, rx) = channel ( ) ;
59
42
for _ in 0 ..1000 {
60
43
let tx = tx. clone ( ) ;
61
44
Builder :: new ( ) . stack_size ( 64 * 1024 ) . spawn ( move || {
62
45
match TcpStream :: connect ( addr) {
63
- Ok ( stream) => {
64
- let mut stream = stream;
46
+ Ok ( mut stream) => {
65
47
stream. write ( & [ 1 ] ) ;
66
- let mut buf = [ 0 ] ;
67
- stream. read ( & mut buf) ;
48
+ stream. read ( & mut [ 0 ] ) ;
68
49
} ,
69
- Err ( e ) => debug ! ( "{}" , e )
50
+ Err ( .. ) => { }
70
51
}
71
52
tx. send ( ( ) ) . unwrap ( ) ;
72
53
} ) ;
@@ -78,5 +59,5 @@ fn main() {
78
59
for _ in 0 ..1000 {
79
60
rx. recv ( ) . unwrap ( ) ;
80
61
}
81
- unsafe { libc :: exit ( 0 ) }
62
+ process :: exit ( 0 ) ;
82
63
}
0 commit comments