Skip to content

Commit 062ac8c

Browse files
committed
Fix whitespace issues from previous commits.
Also added test for #3891.
1 parent d42cf97 commit 062ac8c

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

src/libstd/net_tcp.rs

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,7 @@ impl TcpSocketBuf: io::Reader {
811811
}
812812
fn read_byte() -> int {
813813
let mut bytes = ~[0];
814-
if self.read(bytes, 1u) == 0 {
814+
if self.read(bytes, 1u) == 0 {
815815
if self.end_of_stream {
816816
-1
817817
} else {
@@ -1280,7 +1280,10 @@ mod test {
12801280
fn test_gl_tcp_ipv4_server_client_reader_writer() {
12811281
impl_gl_tcp_ipv4_server_client_reader_writer();
12821282
}
1283-
1283+
#[test]
1284+
fn test_tcp_socket_impl_reader_handles_eof() {
1285+
impl_tcp_socket_impl_reader_handles_eof();
1286+
}
12841287
}
12851288
#[cfg(target_arch="x86")]
12861289
mod impl32 {
@@ -1553,6 +1556,49 @@ mod test {
15531556
*/
15541557
}
15551558

1559+
fn impl_tcp_socket_impl_reader_handles_eof() {
1560+
use io::{Reader,ReaderUtil};
1561+
let hl_loop = uv::global_loop::get();
1562+
let server_ip = ~"127.0.0.1";
1563+
let server_port = 10041u;
1564+
let expected_req = ~"GET /";
1565+
let expected_resp = ~"A string\nwith multiple lines\n";
1566+
1567+
let server_result_po = core::comm::Port::<~str>();
1568+
let server_result_ch = core::comm::Chan(&server_result_po);
1569+
1570+
let cont_po = core::comm::Port::<()>();
1571+
let cont_ch = core::comm::Chan(&cont_po);
1572+
// server
1573+
do task::spawn_sched(task::ManualThreads(1u)) {
1574+
let actual_req = do comm::listen |server_ch| {
1575+
run_tcp_test_server(
1576+
server_ip,
1577+
server_port,
1578+
expected_resp,
1579+
server_ch,
1580+
cont_ch,
1581+
hl_loop)
1582+
};
1583+
server_result_ch.send(actual_req);
1584+
};
1585+
core::comm::recv(cont_po);
1586+
// client
1587+
log(debug, ~"server started, firing up client..");
1588+
let server_addr = ip::v4::parse_addr(server_ip);
1589+
let conn_result = connect(server_addr, server_port, hl_loop);
1590+
if result::is_err(&conn_result) {
1591+
assert false;
1592+
}
1593+
let sock_buf = @socket_buf(result::unwrap(move conn_result));
1594+
buf_write(sock_buf, expected_req);
1595+
1596+
let buf_reader = sock_buf as Reader;
1597+
let actual_response = str::from_bytes(buf_reader.read_whole_stream());
1598+
log(debug, fmt!("Actual response: %s", actual_response));
1599+
assert expected_resp == actual_response;
1600+
}
1601+
15561602
fn buf_write<W:io::Writer>(w: &W, val: &str) {
15571603
log(debug, fmt!("BUF_WRITE: val len %?", str::len(val)));
15581604
do str::byte_slice(val) |b_slice| {

0 commit comments

Comments
 (0)