aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Dremann <dremann@gmail.com>2014-06-13 12:23:39 -0400
committerZachary Dremann <dremann@gmail.com>2014-06-13 12:23:39 -0400
commit01d32fd1fe05d87e5814f2efd9171aa47ef7f664 (patch)
tree2849929ffdd309a3a357c229c763369b12d6729a
parent0a3f5acd4df4a48b10c4f0d63ea4a7070c39c0b5 (diff)
downloadrusty-irc-01d32fd1fe05d87e5814f2efd9171aa47ef7f664.tar.gz
rusty-irc-01d32fd1fe05d87e5814f2efd9171aa47ef7f664.zip
Do not throw out buffered data by dropping a buffered reader
-rw-r--r--src/lib.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 2574b3e..6974cd7 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -73,14 +73,14 @@ impl IrcClient <state::Disconnected> {
});
spawn(proc() {
- let mut reader = reader;
+ let mut reader = BufferedReader::new(reader);
loop {
- fn reader_by_ref<'a, R: Reader>(reader: &'a mut R) -> std::io::RefReader<'a, R> { reader.by_ref() }
-
- reader.set_read_timeout(Some(500));
- let mut buf_reader = BufferedReader::new(reader_by_ref(&mut reader));
+ unsafe {
+ let raw: *mut TcpStream = reader.get_ref() as *_ as *mut _;
+ (*raw).set_read_timeout(Some(500));
+ }
- let line = buf_reader.read_line();
+ let line = reader.read_line();
match line {
Ok(line) => match from_str::<Message>(line.as_slice().trim_right()) {
Some(msg) => {