@@ -142,7 +142,7 @@ pub enum TcpConnectErrData {
142
142
* `net::tcp::tcp_connect_err_data` instance will be returned
143
143
*/
144
144
pub fn connect ( input_ip : ip:: IpAddr , port : uint ,
145
- iotask : IoTask )
145
+ iotask : & IoTask )
146
146
-> result:: Result < TcpSocket , TcpConnectErrData > unsafe {
147
147
let result_po = oldcomm:: Port :: < ConnAttempt > ( ) ;
148
148
let closed_signal_po = oldcomm:: Port :: < ( ) > ( ) ;
@@ -164,7 +164,7 @@ pub fn connect(input_ip: ip::IpAddr, port: uint,
164
164
ip:: Ipv4 ( _) => { false }
165
165
ip:: Ipv6 ( _) => { true }
166
166
} ,
167
- iotask: iotask
167
+ iotask: iotask. clone ( )
168
168
} ;
169
169
let socket_data_ptr = ptr:: addr_of ( & ( * socket_data) ) ;
170
170
log ( debug, fmt ! ( "tcp_connect result_ch %?" , conn_data. result_ch) ) ;
@@ -496,17 +496,17 @@ pub fn accept(new_conn: TcpNewConnection)
496
496
let server_data_ptr = uv:: ll:: get_data_for_uv_handle (
497
497
server_handle_ptr) as * TcpListenFcData ;
498
498
let reader_po = oldcomm:: Port ( ) ;
499
- let iotask = ( * server_data_ptr) . iotask ;
499
+ let iotask = & ( * server_data_ptr) . iotask ;
500
500
let stream_handle_ptr = malloc_uv_tcp_t ( ) ;
501
501
* ( stream_handle_ptr as * mut uv:: ll:: uv_tcp_t ) = uv:: ll:: tcp_t ( ) ;
502
- let client_socket_data = @{
502
+ let client_socket_data: @ TcpSocketData = @{
503
503
reader_po: reader_po,
504
504
reader_ch: oldcomm:: Chan ( & reader_po) ,
505
505
stream_handle_ptr : stream_handle_ptr,
506
506
connect_req : uv:: ll:: connect_t ( ) ,
507
507
write_req : uv:: ll:: write_t ( ) ,
508
508
ipv6 : ( * server_data_ptr) . ipv6 ,
509
- iotask : iotask
509
+ iotask : iotask. clone ( )
510
510
} ;
511
511
let client_socket_data_ptr = ptr:: addr_of ( & ( * client_socket_data) ) ;
512
512
let client_stream_handle_ptr =
@@ -588,10 +588,10 @@ pub fn accept(new_conn: TcpNewConnection)
588
588
* of listen exiting because of an error
589
589
*/
590
590
pub fn listen ( host_ip : ip:: IpAddr , port : uint , backlog : uint ,
591
- iotask : IoTask ,
592
- on_establish_cb : fn ~( oldcomm:: Chan < Option < TcpErrData > > ) ,
593
- new_connect_cb : fn ~( TcpNewConnection ,
594
- oldcomm:: Chan < Option < TcpErrData > > ) )
591
+ iotask : & IoTask ,
592
+ on_establish_cb : fn ~( oldcomm:: Chan < Option < TcpErrData > > ) ,
593
+ new_connect_cb : fn ~( TcpNewConnection ,
594
+ oldcomm:: Chan < Option < TcpErrData > > ) )
595
595
-> result:: Result < ( ) , TcpListenErrData > unsafe {
596
596
do listen_common ( move host_ip, port, backlog, iotask,
597
597
move on_establish_cb)
@@ -606,7 +606,7 @@ pub fn listen(host_ip: ip::IpAddr, port: uint, backlog: uint,
606
606
}
607
607
608
608
fn listen_common ( host_ip : ip:: IpAddr , port : uint , backlog : uint ,
609
- iotask : IoTask ,
609
+ iotask : & IoTask ,
610
610
on_establish_cb : fn ~( oldcomm:: Chan < Option < TcpErrData > > ) ,
611
611
on_connect_cb : fn ~( * uv:: ll:: uv_tcp_t ) )
612
612
-> result:: Result < ( ) , TcpListenErrData > unsafe {
@@ -615,12 +615,12 @@ fn listen_common(host_ip: ip::IpAddr, port: uint, backlog: uint,
615
615
let kill_ch = oldcomm:: Chan ( & kill_po) ;
616
616
let server_stream = uv:: ll:: tcp_t ( ) ;
617
617
let server_stream_ptr = ptr:: addr_of ( & server_stream) ;
618
- let server_data = {
618
+ let server_data: TcpListenFcData = {
619
619
server_stream_ptr: server_stream_ptr,
620
620
stream_closed_ch: oldcomm:: Chan ( & stream_closed_po) ,
621
621
kill_ch: kill_ch,
622
622
on_connect_cb: move on_connect_cb,
623
- iotask: iotask,
623
+ iotask: iotask. clone ( ) ,
624
624
ipv6: match & host_ip {
625
625
& ip:: Ipv4 ( _) => { false }
626
626
& ip:: Ipv6 ( _) => { true }
@@ -895,7 +895,7 @@ fn tear_down_socket_data(socket_data: @TcpSocketData) unsafe {
895
895
} ;
896
896
let close_data_ptr = ptr:: addr_of ( & close_data) ;
897
897
let stream_handle_ptr = ( * socket_data) . stream_handle_ptr ;
898
- do iotask:: interact ( ( * socket_data) . iotask ) |loop_ptr| unsafe {
898
+ do iotask:: interact ( & ( * socket_data) . iotask ) |loop_ptr| unsafe {
899
899
log ( debug, fmt ! ( "interact dtor for tcp_socket stream %? loop %?" ,
900
900
stream_handle_ptr, loop_ptr) ) ;
901
901
uv:: ll:: set_data_for_uv_handle ( stream_handle_ptr,
@@ -916,7 +916,7 @@ fn read_common_impl(socket_data: *TcpSocketData, timeout_msecs: uint)
916
916
use timer;
917
917
918
918
log ( debug, ~"starting tcp:: read") ;
919
- let iotask = ( * socket_data) . iotask ;
919
+ let iotask = & ( * socket_data) . iotask ;
920
920
let rs_result = read_start_common_impl ( socket_data) ;
921
921
if result:: is_err ( & rs_result) {
922
922
let err_data = result:: get_err ( & rs_result) ;
@@ -956,7 +956,7 @@ fn read_stop_common_impl(socket_data: *TcpSocketData) ->
956
956
let stream_handle_ptr = ( * socket_data) . stream_handle_ptr ;
957
957
let stop_po = oldcomm:: Port :: < Option < TcpErrData > > ( ) ;
958
958
let stop_ch = oldcomm:: Chan ( & stop_po) ;
959
- do iotask:: interact ( ( * socket_data) . iotask ) |loop_ptr| unsafe {
959
+ do iotask:: interact ( & ( * socket_data) . iotask ) |loop_ptr| unsafe {
960
960
log ( debug, ~"in interact cb for tcp:: read_stop") ;
961
961
match uv:: ll:: read_stop ( stream_handle_ptr as * uv:: ll:: uv_stream_t ) {
962
962
0i32 => {
@@ -984,7 +984,7 @@ fn read_start_common_impl(socket_data: *TcpSocketData)
984
984
let start_po = oldcomm:: Port :: < Option < uv:: ll:: uv_err_data > > ( ) ;
985
985
let start_ch = oldcomm:: Chan ( & start_po) ;
986
986
log ( debug, ~"in tcp:: read_start before interact loop ") ;
987
- do iotask:: interact ( ( * socket_data) . iotask ) |loop_ptr| unsafe {
987
+ do iotask:: interact ( & ( * socket_data) . iotask ) |loop_ptr| unsafe {
988
988
log ( debug, fmt ! ( "in tcp::read_start interact cb %?" , loop_ptr) ) ;
989
989
match uv:: ll:: read_start ( stream_handle_ptr as * uv:: ll:: uv_stream_t ,
990
990
on_alloc_cb,
@@ -1024,7 +1024,7 @@ fn write_common_impl(socket_data_ptr: *TcpSocketData,
1024
1024
result_ch: oldcomm:: Chan ( & result_po)
1025
1025
} ;
1026
1026
let write_data_ptr = ptr:: addr_of ( & write_data) ;
1027
- do iotask:: interact ( ( * socket_data_ptr) . iotask ) |loop_ptr| unsafe {
1027
+ do iotask:: interact ( & ( * socket_data_ptr) . iotask ) |loop_ptr| unsafe {
1028
1028
log ( debug, fmt ! ( "in interact cb for tcp::write %?" , loop_ptr) ) ;
1029
1029
match uv:: ll:: write ( write_req_ptr,
1030
1030
stream_handle_ptr,
@@ -1369,7 +1369,7 @@ pub mod test {
1369
1369
}
1370
1370
}
1371
1371
pub fn impl_gl_tcp_ipv4_server_and_client ( ) {
1372
- let hl_loop = uv:: global_loop:: get ( ) ;
1372
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1373
1373
let server_ip = ~"127.0 . 0 . 1 ";
1374
1374
let server_port = 8888 u;
1375
1375
let expected_req = ~"ping";
@@ -1381,6 +1381,7 @@ pub mod test {
1381
1381
let cont_po = oldcomm:: Port :: < ( ) > ( ) ;
1382
1382
let cont_ch = oldcomm:: Chan ( & cont_po) ;
1383
1383
// server
1384
+ let hl_loop_clone = hl_loop. clone ( ) ;
1384
1385
do task:: spawn_sched ( task:: ManualThreads ( 1 u) ) {
1385
1386
let actual_req = do oldcomm:: listen |server_ch| {
1386
1387
run_tcp_test_server (
@@ -1389,7 +1390,7 @@ pub mod test {
1389
1390
expected_resp,
1390
1391
server_ch,
1391
1392
cont_ch,
1392
- hl_loop )
1393
+ & hl_loop_clone )
1393
1394
} ;
1394
1395
server_result_ch. send ( actual_req) ;
1395
1396
} ;
@@ -1415,7 +1416,7 @@ pub mod test {
1415
1416
assert str:: contains ( actual_resp, expected_resp) ;
1416
1417
}
1417
1418
pub fn impl_gl_tcp_ipv4_get_peer_addr ( ) {
1418
- let hl_loop = uv:: global_loop:: get ( ) ;
1419
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1419
1420
let server_ip = ~"127.0 . 0 . 1 ";
1420
1421
let server_port = 8887 u;
1421
1422
let expected_resp = ~"pong";
@@ -1426,6 +1427,7 @@ pub mod test {
1426
1427
let cont_po = oldcomm:: Port :: < ( ) > ( ) ;
1427
1428
let cont_ch = oldcomm:: Chan ( & cont_po) ;
1428
1429
// server
1430
+ let hl_loop_clone = hl_loop. clone ( ) ;
1429
1431
do task:: spawn_sched ( task:: ManualThreads ( 1 u) ) {
1430
1432
let actual_req = do oldcomm:: listen |server_ch| {
1431
1433
run_tcp_test_server (
@@ -1434,7 +1436,7 @@ pub mod test {
1434
1436
expected_resp,
1435
1437
server_ch,
1436
1438
cont_ch,
1437
- hl_loop )
1439
+ & hl_loop_clone )
1438
1440
} ;
1439
1441
server_result_ch. send ( actual_req) ;
1440
1442
} ;
@@ -1445,10 +1447,11 @@ pub mod test {
1445
1447
let server_ip_addr = ip::v4::parse_addr(server_ip);
1446
1448
let iotask = uv::global_loop::get();
1447
1449
let connect_result = connect(move server_ip_addr, server_port,
1448
- iotask);
1450
+ & iotask);
1449
1451
1450
1452
let sock = result::unwrap(move connect_result);
1451
1453
1454
+ debug!(" testing peer address") ;
1452
1455
// This is what we are actually testing!
1453
1456
assert net:: ip:: format_addr ( & sock. get_peer_addr ( ) ) ==
1454
1457
~"127.0 . 0 . 1 ";
@@ -1457,12 +1460,14 @@ pub mod test {
1457
1460
// Fulfill the protocol the test server expects
1458
1461
let resp_bytes = str:: to_bytes ( ~"ping") ;
1459
1462
tcp_write_single ( & sock, resp_bytes) ;
1463
+ debug ! ( "message sent" ) ;
1460
1464
let read_result = sock. read ( 0 u) ;
1461
1465
client_ch. send ( str:: from_bytes ( read_result. get ( ) ) ) ;
1466
+ debug ! ( "result read" ) ;
1462
1467
} ;
1463
1468
}
1464
1469
pub fn impl_gl_tcp_ipv4_client_error_connection_refused ( ) {
1465
- let hl_loop = uv:: global_loop:: get ( ) ;
1470
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1466
1471
let server_ip = ~"127.0 . 0 . 1 ";
1467
1472
let server_port = 8889 u;
1468
1473
let expected_req = ~"ping";
@@ -1482,7 +1487,7 @@ pub mod test {
1482
1487
}
1483
1488
}
1484
1489
pub fn impl_gl_tcp_ipv4_server_address_in_use ( ) {
1485
- let hl_loop = uv:: global_loop:: get ( ) ;
1490
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1486
1491
let server_ip = ~"127.0 . 0 . 1 ";
1487
1492
let server_port = 8890 u;
1488
1493
let expected_req = ~"ping";
@@ -1494,6 +1499,7 @@ pub mod test {
1494
1499
let cont_po = oldcomm:: Port :: < ( ) > ( ) ;
1495
1500
let cont_ch = oldcomm:: Chan ( & cont_po) ;
1496
1501
// server
1502
+ let hl_loop_clone = hl_loop. clone ( ) ;
1497
1503
do task:: spawn_sched ( task:: ManualThreads ( 1 u) ) {
1498
1504
let actual_req = do oldcomm:: listen |server_ch| {
1499
1505
run_tcp_test_server (
@@ -1502,7 +1508,7 @@ pub mod test {
1502
1508
expected_resp,
1503
1509
server_ch,
1504
1510
cont_ch,
1505
- hl_loop )
1511
+ & hl_loop_clone )
1506
1512
} ;
1507
1513
server_result_ch. send ( actual_req) ;
1508
1514
} ;
@@ -1533,7 +1539,7 @@ pub mod test {
1533
1539
}
1534
1540
}
1535
1541
pub fn impl_gl_tcp_ipv4_server_access_denied ( ) {
1536
- let hl_loop = uv:: global_loop:: get ( ) ;
1542
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1537
1543
let server_ip = ~"127.0 . 0 . 1 ";
1538
1544
let server_port = 80 u;
1539
1545
// this one should fail..
@@ -1553,7 +1559,7 @@ pub mod test {
1553
1559
}
1554
1560
pub fn impl_gl_tcp_ipv4_server_client_reader_writer ( ) {
1555
1561
1556
- let iotask = uv:: global_loop:: get ( ) ;
1562
+ let iotask = & uv:: global_loop:: get ( ) ;
1557
1563
let server_ip = ~"127.0 . 0 . 1 ";
1558
1564
let server_port = 8891 u;
1559
1565
let expected_req = ~"ping";
@@ -1565,6 +1571,7 @@ pub mod test {
1565
1571
let cont_po = oldcomm:: Port :: < ( ) > ( ) ;
1566
1572
let cont_ch = oldcomm:: Chan ( & cont_po) ;
1567
1573
// server
1574
+ let iotask_clone = iotask. clone ( ) ;
1568
1575
do task:: spawn_sched ( task:: ManualThreads ( 1 u) ) {
1569
1576
let actual_req = do oldcomm:: listen |server_ch| {
1570
1577
run_tcp_test_server (
@@ -1573,7 +1580,7 @@ pub mod test {
1573
1580
expected_resp,
1574
1581
server_ch,
1575
1582
cont_ch,
1576
- iotask )
1583
+ & iotask_clone )
1577
1584
} ;
1578
1585
server_result_ch. send ( actual_req) ;
1579
1586
} ;
@@ -1604,7 +1611,7 @@ pub mod test {
1604
1611
pub fn impl_tcp_socket_impl_reader_handles_eof ( ) {
1605
1612
use core:: io:: { Reader , ReaderUtil } ;
1606
1613
1607
- let hl_loop = uv:: global_loop:: get ( ) ;
1614
+ let hl_loop = & uv:: global_loop:: get ( ) ;
1608
1615
let server_ip = ~"127.0 . 0 . 1 ";
1609
1616
let server_port = 10041 u;
1610
1617
let expected_req = ~"GET /";
@@ -1616,6 +1623,7 @@ pub mod test {
1616
1623
let cont_po = oldcomm:: Port :: < ( ) > ( ) ;
1617
1624
let cont_ch = oldcomm:: Chan ( & cont_po) ;
1618
1625
// server
1626
+ let hl_loop_clone = hl_loop. clone ( ) ;
1619
1627
do task:: spawn_sched ( task:: ManualThreads ( 1 u) ) {
1620
1628
let actual_req = do oldcomm:: listen |server_ch| {
1621
1629
run_tcp_test_server (
@@ -1624,7 +1632,7 @@ pub mod test {
1624
1632
expected_resp,
1625
1633
server_ch,
1626
1634
cont_ch,
1627
- hl_loop )
1635
+ & hl_loop_clone )
1628
1636
} ;
1629
1637
server_result_ch. send ( actual_req) ;
1630
1638
} ;
@@ -1664,7 +1672,7 @@ pub mod test {
1664
1672
fn run_tcp_test_server ( server_ip : & str , server_port : uint , resp : ~str ,
1665
1673
server_ch : oldcomm:: Chan < ~str > ,
1666
1674
cont_ch : oldcomm:: Chan < ( ) > ,
1667
- iotask : IoTask ) -> ~str {
1675
+ iotask : & IoTask ) -> ~str {
1668
1676
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1669
1677
let listen_result = listen ( move server_ip_addr, server_port, 128 ,
1670
1678
iotask,
@@ -1751,7 +1759,7 @@ pub mod test {
1751
1759
}
1752
1760
1753
1761
fn run_tcp_test_server_fail( server_ip: & str, server_port: uint,
1754
- iotask: IoTask ) -> TcpListenErrData {
1762
+ iotask: & IoTask ) -> TcpListenErrData {
1755
1763
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1756
1764
let listen_result = listen ( move server_ip_addr, server_port, 128 ,
1757
1765
iotask,
@@ -1775,7 +1783,7 @@ pub mod test {
1775
1783
1776
1784
fn run_tcp_test_client ( server_ip : & str , server_port : uint , resp : & str ,
1777
1785
client_ch : oldcomm:: Chan < ~str > ,
1778
- iotask : IoTask ) -> result:: Result < ~str ,
1786
+ iotask : & IoTask ) -> result:: Result < ~str ,
1779
1787
TcpConnectErrData > {
1780
1788
let server_ip_addr = ip:: v4:: parse_addr ( server_ip) ;
1781
1789
0 commit comments