send verack during handshake (0.14 compat)
This commit is contained in:
parent
60d0ab0018
commit
ed0aff798b
|
@ -50,6 +50,10 @@ fn verack_message(magic: Magic) -> Message<Verack> {
|
||||||
enum HandshakeState<A> {
|
enum HandshakeState<A> {
|
||||||
SendVersion(WriteMessage<Version, A>),
|
SendVersion(WriteMessage<Version, A>),
|
||||||
ReceiveVersion(ReadMessage<Version, A>),
|
ReceiveVersion(ReadMessage<Version, A>),
|
||||||
|
SendVerack {
|
||||||
|
version: Option<Version>,
|
||||||
|
future: WriteMessage<Verack, A>,
|
||||||
|
},
|
||||||
ReceiveVerack {
|
ReceiveVerack {
|
||||||
version: Option<Version>,
|
version: Option<Version>,
|
||||||
future: ReadMessage<Verack, A>,
|
future: ReadMessage<Verack, A>,
|
||||||
|
@ -115,6 +119,18 @@ impl<A> Future for Handshake<A> where A: AsyncRead + AsyncWrite {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let next = HandshakeState::SendVerack {
|
||||||
|
version: Some(version),
|
||||||
|
future: write_message(stream, verack_message(self.magic)),
|
||||||
|
};
|
||||||
|
|
||||||
|
(next, Async::NotReady)
|
||||||
|
},
|
||||||
|
HandshakeState::SendVerack { ref mut version, ref mut future } => {
|
||||||
|
let (stream, _) = try_ready!(future.poll());
|
||||||
|
|
||||||
|
let version = version.take().expect("verack must be preceded by version");
|
||||||
|
|
||||||
let next = HandshakeState::ReceiveVerack {
|
let next = HandshakeState::ReceiveVerack {
|
||||||
version: Some(version),
|
version: Some(version),
|
||||||
future: read_message(stream, self.magic, 0),
|
future: read_message(stream, self.magic, 0),
|
||||||
|
@ -307,6 +323,7 @@ mod tests {
|
||||||
|
|
||||||
let mut expected_stream = Stream::new();
|
let mut expected_stream = Stream::new();
|
||||||
expected_stream.append_slice(Message::new(magic, version, &local_version).unwrap().as_ref());
|
expected_stream.append_slice(Message::new(magic, version, &local_version).unwrap().as_ref());
|
||||||
|
expected_stream.append_slice(Message::new(magic, version, &Verack).unwrap().as_ref());
|
||||||
|
|
||||||
let test_io = TestIo {
|
let test_io = TestIo {
|
||||||
read: io::Cursor::new(remote_stream.out()),
|
read: io::Cursor::new(remote_stream.out()),
|
||||||
|
|
Loading…
Reference in New Issue