X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fpeer.rs;h=aeeb2c2c582e7ba9c0546c5a08010468a6ef7fe1;hb=c579e91f083d369055230497b1c7bf4191a50880;hp=137d92dc311fea047dab956f0ba573c5f1caa7a0;hpb=820109e4f9b0b820a4c7c0f75670000548e6e760;p=dnsseed-rust diff --git a/src/peer.rs b/src/peer.rs index 137d92d..aeeb2c2 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -45,10 +45,10 @@ impl<'a> std::io::Read for BytesDecoder<'a> { struct MsgCoder<'a>(&'a Printer); impl<'a> codec::Decoder for MsgCoder<'a> { - type Item = NetworkMessage; + type Item = Option; type Error = encode::Error; - fn decode(&mut self, bytes: &mut bytes::BytesMut) -> Result, encode::Error> { + fn decode(&mut self, bytes: &mut bytes::BytesMut) -> Result>, encode::Error> { let mut decoder = BytesDecoder { buf: bytes, pos: 0 @@ -57,7 +57,7 @@ impl<'a> codec::Decoder for MsgCoder<'a> { Ok(res) => { decoder.buf.advance(decoder.pos); if res.magic == Network::Bitcoin.magic() { - Ok(Some(res.payload)) + Ok(Some(Some(res.payload))) } else { Err(encode::Error::UnexpectedNetworkMagic { expected: Network::Bitcoin.magic(), @@ -72,7 +72,7 @@ impl<'a> codec::Decoder for MsgCoder<'a> { //XXX(fixthese): self.0.add_line(format!("rust-bitcoin doesn't support {}!", msg), true); if msg == "gnop" { Err(e) - } else { Ok(None) } + } else { Ok(Some(None)) } }, _ => { self.0.add_line(format!("Error decoding message: {:?}", e), true); @@ -148,7 +148,7 @@ macro_rules! try_write_small { pub struct Peer {} impl Peer { - pub fn new(addr: SocketAddr, tor_proxy: &SocketAddr, timeout: Duration, printer: &'static Printer) -> impl Future, impl Stream)> { + pub fn new(addr: SocketAddr, tor_proxy: &SocketAddr, timeout: Duration, printer: &'static Printer) -> impl Future, impl Stream, Error=encode::Error>)> { let connect_timeout = Delay::new(Instant::now() + timeout.clone()).then(|_| { future::err(std::io::Error::new(std::io::ErrorKind::TimedOut, "timeout reached")) });